{"id":42725,"date":"2025-09-08T08:00:00","date_gmt":"2025-09-08T15:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=42725"},"modified":"2025-09-08T08:30:32","modified_gmt":"2025-09-08T15:30:32","slug":"linux-commands","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/","title":{"rendered":"30+ Essential Linux Commands You Need To Know"},"content":{"rendered":"\n<p>Almost everything has a beautiful user interface these days. Just point and click to get things done. So we almost never need the command line.<\/p>\n\n\n\n<p>But the moment you sign up for a VPS, you need to learn these essential Linux commands, or you&#8217;ll be left staring at a black screen, wondering what the heck to do next.<\/p>\n\n\n\n<p>While there are thousands of Linux commands, I\u2019ve filtered down to the 30 most-used commands for day-to-day server management.<\/p>\n\n\n\n<h2 id=\"h-understand-your-current-proficiency-with-linux-commands\" class=\"wp-block-heading\">Understand Your Current Proficiency With Linux Commands<\/h2>\n\n\n\n<p>Depending on how often you use Linux commands, you\u2019ll fall into one of these four proficiency levels.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Foundation level:<\/strong> You can <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/glossary\/hosting\/ssh\/\">SSH<\/a> into your server and navigate directories, but you aren\u2019t comfortable with system changes. You probably copy-paste commands from tutorials without fully understanding what they do. File permissions are still confusing, and when something breaks, you don\u2019t know where to start looking.<\/li>\n\n\n\n<li><strong>Professional level:<\/strong> You&#8217;re comfortable with basic file operations and can troubleshoot simple issues, but complex problems still send you searching for help. You can manage development environments but lack the confidence to optimize performance or implement security measures.<\/li>\n\n\n\n<li><strong>Infrastructure level:<\/strong> You can diagnose performance bottlenecks and handle security configurations, but automation feels overwhelming. You understand how individual commands work, but aren\u2019t fluent enough yet to combine them into efficient workflows.<\/li>\n\n\n\n<li><strong>Expert level:<\/strong> You can think systematically about server architecture and can quickly identify the root cause of complex issues. You automate routine tasks and can optimize servers for specific use cases without relying on external resources.<\/li>\n<\/ul>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n\n<p>I\u2019ve categorized the Linux commands below, keeping in mind these exact proficiency levels.<\/p>\n\n\n\n<h2 id=\"h-foundation-level-commands-every-developer-must-master\" class=\"wp-block-heading\">Foundation Level: Commands Every Developer Must Master<\/h2>\n\n\n\n<p>The first time you SSH into a VPS, you need to know how to navigate around and look at files. These commands help you do that without feeling completely lost.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1602\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master.webp\" alt=\"Table of foundation level developer commands with prompts, meanings, and functions including ls, pwd, cd, mkdir, cp, mv, cat, head, and tail.\" class=\"wp-image-75443 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-300x300.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-1024x1024.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-150x150.webp 150w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-768x769.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-1534x1536.webp 1534w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-600x601.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-1200x1202.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-730x731.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-1460x1462.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-784x785.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-1568x1570.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_foundation_level_commands_every_developer_must_master-877x878.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1602;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Navigation and File Inspection<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. Is: Shows the contents of your current directory<\/h4>\n\n\n\n<p>The command without parameters lists (get it? ls = list!) all visible files and folders in your current location.<\/p>\n\n\n\n<p>But when managing websites, you need more detailed information, so you can use <strong>ls -la<\/strong> to see permissions, ownership, file sizes, and hidden files that start with dots.<\/p>\n\n\n\n<p><strong><code>ls -la \/var\/www\/html<\/code><\/strong><\/p>\n\n\n\n<p>The output shows everything you need:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"795\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html.webp\" alt=\"Directory listing of \/var\/www\/html showing two HTML files and a phpmyadmin symlink pointing to \/usr\/share\/phpmyadmin\" class=\"wp-image-75431 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-300x149.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-1024x509.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-768x382.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-1536x763.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-600x298.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-1200x596.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-730x363.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-1460x725.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-784x390.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-1568x779.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/01_is_la_var_www_html-877x436.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/795;\" \/><\/figure>\n\n\n\n<p>The first column shows file permissions, the third and fourth show who owns the file, and the last shows when it was modified.<\/p>\n\n\n\n<p>The table shows detailed information about all files in your web directory, including hidden configuration files like <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216456227--htaccess-overview\"><strong>.htaccess<\/strong><\/a> that can cause website issues.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2. pwd: Shows your current location in the directory structure<\/h4>\n\n\n\n<p>The command stands for &#8220;print working directory&#8221; and displays the full path of where you\u2019re currently located. When <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/vps-upgrade\/\">managing multiple websites on one VPS<\/a>, this prevents you from accidentally editing the wrong site&#8217;s files. Just type in:<\/p>\n\n\n\n<p><strong><code>pwd<\/code><\/strong><\/p>\n\n\n\n<p>This might return something like <strong>\/var\/www\/site1<\/strong>, confirming you&#8217;re working in the correct website directory.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. cd: Change directory, which changes your current directory to a different location<\/h4>\n\n\n\n<p>The basic syntax is \u201ccd \/path\/to\/directory.\u201d<\/p>\n\n\n\n<p>You can use shortcuts like &#8220;cd&#8221; alone to go home, &#8220;cd -&#8221; to return to your previous directory, and &#8220;cd ..&#8221; to move up one level.<\/p>\n\n\n\n<p><strong><code>cd \/var\/www\/html<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"800\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x.webp\" alt=\"Terminal showing command cd \/var\/www\/ with prompt updated to root@localhost:\/var\/www#\" class=\"wp-image-75432 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-300x150.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-1024x512.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-768x384.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-1536x768.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-600x300.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-1200x600.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-730x365.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-1460x730.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-784x392.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-1568x784.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_cd_var_www_html_1x-877x439.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/800;\" \/><\/figure>\n\n\n\n<p>This moves you directly to your website&#8217;s main directory, where most files are stored.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">File and Directory Management<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">4. mkdir: Creates new directories<\/h4>\n\n\n\n<p>It stands for \u201cMake Directory,\u201d and the basic syntax is \u201cmkdir directory-name\u201d to create a single folder.<\/p>\n\n\n\n<p>You can use \u201cmkdir -p\u201d to create nested directory structures in one command, and it won&#8217;t error if directories already exist.<\/p>\n\n\n\n<p><strong><code>mkdir -p \/var\/www\/newsite\/{public,logs,backups,ssl}<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"800\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x.webp\" alt=\"Terminal showing creation of \/var\/www\/newsite with subdirectories backups, logs, public, and ssl listed in output\" class=\"wp-image-75433 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-300x150.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-1024x512.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-768x384.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-1536x768.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-600x300.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-1200x600.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-730x365.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-1460x730.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-784x392.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-1568x784.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_mkdir_p_var_www_newsite_public_logs_backups_ssl__1x-877x439.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/800;\" \/><\/figure>\n\n\n\n<p>This creates a complete directory structure for a new website with separate folders for public files, logs, backups, and <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/ultimate-guide-ssl-tls\/\">SSL<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5. cp: Copies files and directories from one location to another<\/h4>\n\n\n\n<p>The basic syntax is:<\/p>\n\n\n\n<p><strong><code>cp &lt;source path> &lt;destination path><\/code><\/strong><\/p>\n\n\n\n<p>However, by default, the cp command does not copy files inside folders or even nested folders.<\/p>\n\n\n\n<p>You\u2019ll need to use \u201ccp -r\u201d to copy entire directory trees recursively, which handles all subdirectories and their contents.<\/p>\n\n\n\n<p><strong><code>cp -r \/var\/www\/production \/var\/www\/staging<\/code><\/strong><\/p>\n\n\n\n<p>This creates a complete copy of your production website for testing changes before deploying them live.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6. mv: Moves files and directories, or renames them<\/h4>\n\n\n\n<p>Unlike copying, this removes the original file, and you can move to different directories or rename files in the same location.<\/p>\n\n\n\n<p>Here\u2019s the basic syntax:<\/p>\n\n\n\n<p><strong><code>mv &lt;source path> &lt;destination path><\/code><\/strong><\/p>\n\n\n\n<p>To move the file elsewhere, you need to specify the full destination path as below:<\/p>\n\n\n\n<p><strong><code>mv wordpress-6.3.2.zip \/var\/www\/downloads\/<\/code><\/strong><\/p>\n\n\n\n<p>If you want to rename a file, you can just \u201cmove\u201d the file from one name to another name in the same directory:<\/p>\n\n\n\n<p><strong><code>mv nginx.conf nginx.conf.backup<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"676\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x.webp\" alt=\"Terminal showing nginx.conf renamed to nginx.conf.backup in \/var\/www\/html, confirmed by updated directory listing\" class=\"wp-image-75434 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-300x127.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-1024x433.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-768x324.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-1536x649.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-600x254.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-1200x507.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-730x308.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-1460x617.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-784x331.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-1568x662.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_mv_nginx_conf_nginx_conf_backup_1x-877x371.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/676;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">File Content Operations<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">7. cat: Displays the entire contents of a file in your terminal (Short for concatenate)<\/h4>\n\n\n\n<p>The basic syntax is <strong>cat filename<\/strong>. This command is perfect for reading short configuration files or checking the contents of scripts without opening a text editor.<\/p>\n\n\n\n<p><strong><code>cat \/var\/www\/html\/wp-config.php<\/code><\/strong><\/p>\n\n\n\n<p>This displays your <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/214693268-WordPress-wp-config-php-overview\">WordPress configuration file<\/a> so you can verify database credentials or check for syntax errors.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">8. head: Shows the first few lines of a file<\/h4>\n\n\n\n<p>The default is 10 lines, but you can specify a different number with \u201chead -n 20.\u201d This is useful for checking large log files without displaying thousands of lines in your terminal.<\/p>\n\n\n\n<p><strong><code>head -n 50 \/var\/log\/nginx\/access.log<\/code><\/strong><\/p>\n\n\n\n<p>This shows the first 50 entries from your web server&#8217;s access log to check recent traffic patterns.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">9. tail: Shows the last few lines of a file<\/h4>\n\n\n\n<p>The tail command without any parameters shows 10 lines, but \u201ctail -f\u201d continuously displays new lines as they&#8217;re added to the file. This makes it invaluable for monitoring log files in real-time while troubleshooting.<\/p>\n\n\n\n<p><strong><code>tail -f \/var\/log\/nginx\/error.log<\/code><\/strong><\/p>\n\n\n\n<p>This follows your error log in real-time, showing new error messages immediately as they occur during website operations.<\/p>\n\n\n\n<h2 id=\"h2_professional-level-commands-for-managing-development-workflows\" class=\"wp-block-heading\">Professional Level: Commands for Managing Development Workflows<\/h2>\n\n\n\n<p>Once you know your way around, these professional-level commands give you control over the dynamic parts of your server. You can monitor what&#8217;s running, manage processes, and handle system resources like a pro.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1830\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows.webp\" alt=\"Table of professional level developer commands with prompts, meanings, and functions including ps, top, htop, kill, killall, df, free, du, grep, find, and chmod.\" class=\"wp-image-75446 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-262x300.webp 262w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-895x1024.webp 895w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-768x878.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-1343x1536.webp 1343w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-600x686.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-1200x1373.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-730x835.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-1460x1670.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-784x897.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-1568x1793.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/02_professional_level_commands_for_managing_development_workflows-877x1003.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1830;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Process Control and Monitoring<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">10. ps: Shows currently running processes on your system<\/h4>\n\n\n\n<p>Running \u201cps aux\u201d displays all processes with detailed information, including CPU and memory usage.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>a<\/strong> shows processes for all users.<\/li>\n\n\n\n<li><strong>u<\/strong> provides a user-friendly format.<\/li>\n\n\n\n<li><strong>x<\/strong> includes processes not attached to terminals.<\/li>\n<\/ul>\n\n\n\n<p><strong>| <\/strong>the \u201cpipe\u201d passes the output from \u201cps aux\u201d to the \u201cgrep\u201d command, and I\u2019ll cover it in the file searching section later.<\/p>\n\n\n\n<p><strong><code>ps aux | grep nginx<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"751\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x.webp\" alt=\"Terminal showing ps aux | grep nginx output listing only the grep command itself, no active nginx process found\" class=\"wp-image-75435 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-300x141.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-1024x481.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-768x360.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-1536x721.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-600x282.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-1200x563.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-730x343.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-1460x685.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-784x368.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-1568x736.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/05_ps_aux_grep_nginx_1x-877x412.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/751;\" \/><\/figure>\n\n\n\n<p>This full command outputs all NGINX-related processes, helping you verify your web server is running and identify any resource-heavy processes.<\/p>\n\n\n\n<iframe width=\"560\" height=\"315\" data-src=\"https:\/\/www.youtube.com\/embed\/cFhpilbHEy4?si=TGcaSeghHjrVnRXv\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe>\n\n\n\n<h4 class=\"wp-block-heading\">11. top: Displays real-time system performance and running processes<\/h4>\n\n\n\n<p>Unlike \u201cps,\u201d this command updates continuously, showing live CPU, memory, and process information. Press <strong>q<\/strong> to quit, <strong>k<\/strong> to kill processes, and <strong>M<\/strong> to sort by memory usage.<\/p>\n\n\n\n<p><strong><code>top<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"751\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x.webp\" alt=\"Terminal showing top command output with system uptime of 16 days, load average 0.00, and root processes including systemd, kthreadd, and rcu tasks\" class=\"wp-image-75436 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-300x141.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-1024x481.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-768x360.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-1536x721.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-600x282.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-1200x563.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-730x343.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-1460x685.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-784x368.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-1568x736.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/06_top_1x-877x412.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/751;\" \/><\/figure>\n\n\n\n<p>When your <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216349808-Common-reasons-for-poor-website-performance\">website loads slowly<\/a>, this reveals which processes are consuming resources. The load average and memory usage statistics help identify system bottlenecks.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">12. htop: Enhanced version of top with better visual interface<\/h4>\n\n\n\n<p>This provides the same functionality as top but with color coding, mouse support, and easier navigation. You may need to install it first with a sudo command, which we cover down below.<\/p>\n\n\n\n<p><strong><code>htop<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"751\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x.webp\" alt=\"Terminal showing htop output with 61 tasks, 486MB of 3.82GB memory used, uptime 16 days, and multiple node processes under root consuming 2.4% memory each\" class=\"wp-image-75437 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-300x141.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-1024x481.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-768x360.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-1536x721.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-600x282.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-1200x563.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-730x343.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-1460x685.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-784x368.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-1568x736.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/07_htop_1x-877x412.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/751;\" \/><\/figure>\n\n\n\n<p>The color-coded display makes it easier to spot problem processes at a glance, and you can scroll through the process list more easily.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">13. kill: Terminates processes by their process ID<\/h4>\n\n\n\n<p>Use <strong>kill &lt;PID&gt;<\/strong> to stop a specific process gracefully. If a process doesn&#8217;t respond, you can force termination with <strong>kill -9 &lt;PID&gt;<\/strong>.<\/p>\n\n\n\n<p><strong><code>kill 1234<\/code><\/strong><\/p>\n\n\n\n<p>When a PHP process gets stuck consuming too much CPU, find its PID with ps aux or top, then use kill to terminate it.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">14. killall: Terminates all processes with a specific name<\/h4>\n\n\n\n<p>You won\u2019t always know the PID since service names can differ from app names. The <strong>killall &lt;processname&gt;<\/strong> command stops all processes matching that name at once.<\/p>\n\n\n\n<p><strong><code>killall php-fpm<\/code><\/strong><\/p>\n\n\n\n<p>This stops all PHP-FPM worker processes \u2014 useful when you need to restart your PHP handler completely.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">System Resource Monitoring<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">15. df: Shows disk space usage for all mounted filesystems<\/h4>\n\n\n\n<p>Running \u201cdf -h\u201d displays disk usage in human-readable format (GB, MB instead of kibibytes). The above command can help you keep track of disk usage so you can avoid disk full errors.<\/p>\n\n\n\n<p><strong><code>df -h<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"745\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x.webp\" alt=\"Terminal showing df -h output with root filesystem \/dev\/sda at 79G total, 27G used, 49G available, 36% usage, plus tmpfs entries with minimal use\" class=\"wp-image-75438 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-300x140.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-1024x477.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-768x358.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-1536x715.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-600x279.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-1200x559.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-730x340.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-1460x680.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-784x365.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-1568x730.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/08_df_h_1x-877x408.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/745;\" \/><\/figure>\n\n\n\n<p>If you see the \u201cuse%\u201d column with more than 70% for any disk, it\u2019s time to clean up the disk space or upgrade to larger storage.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">16. free: Displays memory usage including RAM and swap space<\/h4>\n\n\n\n<p>Without parameters, the free command will provide you data in kibibytes (1 kibibyte is 1024 bytes).<\/p>\n\n\n\n<p>Use \u201cfree -h\u201d to see memory statistics in human-readable format. This helps identify memory-related performance issues before they crash your applications.<\/p>\n\n\n\n<p><strong><code>free -h<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"714\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x.webp\" alt=\"Terminal showing free -h output with 3.8Gi total memory, 417Mi used, 410Mi free, 3.0Gi buff\/cache, and 3.1Gi available, plus 511Mi swap free\" class=\"wp-image-75439 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-300x134.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-1024x457.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-768x343.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-1536x685.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-600x268.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-1200x536.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-730x326.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-1460x652.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-784x350.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-1568x700.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/09_free_h_1x-877x391.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/714;\" \/><\/figure>\n\n\n\n<p>If &#8220;available&#8221; memory drops near zero, your server will become unresponsive. This indicator tells you when to add more RAM or optimize your applications.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">17. du: Shows disk usage for specific directories<\/h4>\n\n\n\n<p>Running <strong>du -sh &lt;directory&gt;<\/strong> gives you a summary of the space usage for a particular folder. The \u201c-s\u201d gives totals only and the \u201c-h,\u201d as we\u2019ve seen in the commands before, makes the output human-readable.<\/p>\n\n\n\n<p><strong><code>du -sh \/var\/www\/*<\/code><\/strong><\/p>\n\n\n\n<p>If you\u2019re running multiple websites on your VPS, the above command will show you which website consumes the most space and helps you identify directories that could use cleanup<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. File Searching and Text Processing<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">18. grep: Searches for text patterns within files<\/h4>\n\n\n\n<p>Grep stands for \u201cglobal regular expression print.\u201d I used the \u201cgrep\u201d command with our \u201cps aux\u201d command before. Let me explain what it actually does.<\/p>\n\n\n\n<p>This command can be used to look up text or regex patterns in large text. Use <strong>grep &#8220;search term&#8221; &lt;filename&gt;<\/strong> to find specific text in a file. Add \u201c-r\u201d to search recursively through directories and \u201c-i\u201d for case-insensitive matching.<\/p>\n\n\n\n<p><strong><code>grep -r \"database_name\" \/var\/www\/html\/<\/code><\/strong><\/p>\n\n\n\n<p>This finds all files containing your database name, essential for tracking configuration references or troubleshooting connection issues.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-19-find-searches-for-files-and-directories-based-on-various-criteria\">19. find: Searches for files and directories based on various criteria<\/h4>\n\n\n\n<p>This command helps you find files in your path that match a specific name or pattern.<\/p>\n\n\n\n<p>You can use find<strong> &lt;path&gt; -name &#8220;pattern&#8221;<\/strong> searches for files matching a specific pattern. You can search by name, size, modification time, or file type.<\/p>\n\n\n\n<p><strong><code>find \/var\/www -name \"*.log\" -size +100M<\/code><\/strong><\/p>\n\n\n\n<p>This finds log files larger than 100MB, helping identify files that need rotation or cleanup to free disk space.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">20. chmod: Changes file and directory permissions<\/h4>\n\n\n\n<p>File permissions on Linux can be complex, and I cannot explain them in detail here, but Red Hat wrote a <a target=\"_blank\" href=\"https:\/\/www.redhat.com\/en\/blog\/linux-file-permissions-explained\">comprehensive article<\/a> explaining file permissions.<\/p>\n\n\n\n<p>Once you understand file permissions, you can use the \u201cchmod\u201d command to update them.<\/p>\n\n\n\n<p>Use <strong>chmod &lt;permissions&gt; &lt;filename&gt;<\/strong> to set access for the specified filename.<\/p>\n\n\n\n<p>\u201cPermissions,\u201d in this case, use numeric notation where\u201d 7=read+write+execute,\u201d \u201c6=read+write,\u201d \u201c4=read only.\u201d<\/p>\n\n\n\n<p><strong><code>chmod 644 \/var\/www\/html\/wp-config.php<\/code><\/strong><\/p>\n\n\n\n<p>Giving 777 permissions to critical files opens your server to security vulnerabilities.<\/p>\n\n\n\n<p>So you need to be aware of what permissions are absolutely necessary and only provide those. Web files typically need 644 permissions, while website directories need 755 to run correctly.<\/p>\n\n\n\n<h2 id=\"h2_infrastructure-level-commands-for-production-environments\" class=\"wp-block-heading\">Infrastructure Level: Commands for Production Environments<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1488\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments.webp\" alt=\"Table of infrastructure level developer commands with prompts, meanings, and functions including ping, curl, netstat, ss, sudo, chown, ssh-keygen, and ufw.\" class=\"wp-image-75445 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-300x279.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-1024x952.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-768x714.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-1536x1428.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-600x558.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-1200x1116.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-730x679.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-1460x1358.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-784x729.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-1568x1458.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/03_infrastructure_level_commands_for_production_environments-877x816.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1488;\" \/><\/figure>\n\n\n\n<p>When you\u2019re required to handle the networking aspect of your servers, these commands can quickly separate competent administrators from those who struggle when real issues hit production websites.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Network Diagnostics and Management<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">21. ping: Tests network connectivity and measures response time<\/h4>\n\n\n\n<p>The \u201cping\u201d command checks if your server can connect to another website or server. You can ping either a domain name or an IP address.<\/p>\n\n\n\n<p>Using just <strong>ping &lt;hostname\/IP&gt;<\/strong> will create an endless ping until you manually stop it. You can add<strong> \u201c<\/strong>-c 4\u201d so the command only sends 4 packets to verify connectivity and stops.<\/p>\n\n\n\n<p><strong><code>ping -c 4 yourdomain.com<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"666\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com.webp\" alt=\"Terminal showing ping test to dreamhost.com with 4 packets transmitted and received, 0% packet loss, and average round-trip time of 245 ms\" class=\"wp-image-75440 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-300x125.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-1024x426.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-768x320.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-1536x639.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-600x250.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-1200x500.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-730x304.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-1460x608.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-784x326.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-1568x653.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/10_ping_c_4_yourdomain_com-877x365.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/666;\" \/><\/figure>\n\n\n\n<p>If ping fails entirely, either <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/215413857-DreamHost-DNS-overview\">DNS<\/a> is broken or there&#8217;s a network connectivity issue and you can start narrowing down the issue from here.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">22. curl: Transfers data to or from servers using various protocols<\/h4>\n\n\n\n<p>When you\u2019re in the terminal, fetching a website and downloading packages is quite difficult. You don\u2019t have a browser or a UI connected.<\/p>\n\n\n\n<p>This command has a variety of parameters, so you may want to go through this <a target=\"_blank\" href=\"https:\/\/curl.se\/docs\/tutorial.html\">official curl usage tutorial<\/a> to understand it completely.<\/p>\n\n\n\n<p>But for checking if a website is responding, you only need the \u201c-I\u201d (that\u2019s uppercase i) parameter. This parameter helps curl fetch HTTP headers instead of fetching the full HTML from the website.<\/p>\n\n\n\n<p><strong><code>curl -I https:\/\/yourdomain.com<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"877\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com.webp\" alt=\"Terminal showing curl header request to dreamhost.com returning HTTP 301 redirect to https:\/\/www.dreamhost.com\/\n with server AmazonS3 via CloudFront\" class=\"wp-image-75441 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-300x164.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-1024x561.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-768x421.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-1536x842.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-600x329.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-1200x658.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-730x400.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-1460x800.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-784x430.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-1568x859.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/11_curl_i_https_yourdomain_com-877x481.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/877;\" \/><\/figure>\n\n\n\n<p>This shows HTTP status codes (\u201c200=success,\u201d \u201c404=not found,\u201d \u201c500=server error\u201d) and response headers, revealing issues browsers might hide.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">23. netstat: Shows network connections and listening services<\/h4>\n\n\n\n<p>Netstat is yet another extensive command that helps you monitor your network connections, check which ports are open on your server, which services are listening on which specific ports, and a lot more.<\/p>\n\n\n\n<p>Here\u2019s a simple <a target=\"_blank\" href=\"https:\/\/www.ibm.com\/docs\/en\/aix\/7.2.0?topic=command-using-netstat\">guide from IBM<\/a> that shows you some common netstat usage.<\/p>\n\n\n\n<p>For server use, you\u2019d mostly need the \u201cnetstat -tlnp command\u201d to display listening network connections.<\/p>\n\n\n\n<p>The flags mean:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201c-t\u201d TCP connections<\/li>\n\n\n\n<li>\u201c-l\u201d listening only<\/li>\n\n\n\n<li>\u201c-n\u201d numerical addresses<\/li>\n\n\n\n<li>\u201c-p\u201d process IDs<\/li>\n<\/ul>\n\n\n\n<p><strong><code>netstat -tlnp | grep :80<\/code><\/strong><\/p>\n\n\n\n<p>This confirms your web server is listening on port 80. If nothing appears, your web server isn&#8217;t running or configured properly.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">24. ss: A modern replacement for netstat with better performance<\/h4>\n\n\n\n<p>While netstat has been the legacy tool that continues to work, it can be slower if you\u2019re on an extremely busy server. The \u201css\u201d command came in to fix that.<\/p>\n\n\n\n<p>You can use similar parameters as netstat with the ss command and receive the output much faster.<\/p>\n\n\n\n<p><strong><code>ss -tlnp | grep :443<\/code><\/strong><\/p>\n\n\n\n<p>This checks if your web server is listening for SSL connections on port 443, essential for HTTPS websites.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security and Access Control<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">25. sudo: Executes commands with elevated privileges<\/h4>\n\n\n\n<p>Sudo, short for &#8220;super user do,&#8221; lets you perform administrative tasks without switching to the root user completely. It helps run commands with accountability and reduced risk.<\/p>\n\n\n\n<p>If you switch to the \u201croot\u201d account, you have full control over your server and can accidentally delete files, including being able to delete the operating system, <em>while<\/em> it is running.<\/p>\n\n\n\n<p>So, sudo saves us from \u201csuc\u201d accidents. Just prepend the command to any admin command and it will ask you for your password.<\/p>\n\n\n\n<p><strong><code>sudo systemctl restart nginx<\/code><\/strong><\/p>\n\n\n\n<p>Administrative tasks like restarting services require elevated privileges. Using sudo is safer than logging in as root directly.<\/p>\n\n\n\n<p>Do note that your user needs to have the sudo permissions before using the sudo command.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">26. chown: Changes file and directory ownership<\/h4>\n\n\n\n<p>In Linux, every file is owned by a user and a group. You can always change who owns the file by using the chown command. You can use <strong>chown &lt;user&gt;:&lt;group&gt; &lt;filename&gt;<\/strong> to set file ownership.<\/p>\n\n\n\n<p>For instance, web servers need to own website files to serve them properly.<\/p>\n\n\n\n<p><strong><code>chown -R www-data:www-data \/var\/www\/html\/<\/code><\/strong><\/p>\n\n\n\n<p>This command is helpful if you are uploading files via <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/115000675027-FTP-overview-and-credentials\">FTP<\/a>. These files can come in with the wrong ownership, and you can use chown to change that.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">27. ssh-keygen: Generates SSH key pairs for secure authentication<\/h4>\n\n\n\n<p>SSH keys are much more secure than passwords for server access. The SSH key sits on your computer without ever being sent to the server, so a hacker watching your network will never see the key that helped you log in.<\/p>\n\n\n\n<p>Running \u201cssh-keygen -t rsa -b 4096\u201d creates public and private key files.<\/p>\n\n\n\n<p><strong><code>ssh-keygen -t rsa -b 4096 -C \"your@email.com\"<\/code><\/strong><\/p>\n\n\n\n<p>This creates a \u201c4096-bit RSA\u201d key pair. Copy the public key to servers for passwordless authentication and automated deployments.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">28. ufw: Ubuntu&#8217;s uncomplicated Firewall for basic server protection<\/h4>\n\n\n\n<p>Every server needs a good firewall setup. Most Linux servers come with the <a target=\"_blank\" href=\"https:\/\/help.ubuntu.com\/community\/UFW\">ufw firewall<\/a>, or it can be easily installed.<\/p>\n\n\n\n<p>Once you have it, run the <strong>ufw enable<\/strong> command to activate the firewall, then <strong>ufw allow &lt;port&gt;<\/strong> to permit specific services through the firewall.<\/p>\n\n\n\n<p><code><strong>ufw enable<\/strong><br><strong>ufw allow 22<\/strong><br><strong>ufw allow 80<\/strong><br><strong>ufw allow 443<\/strong><\/code><\/p>\n\n\n\n<p>This allows SSH (22), HTTP (80), and HTTPS (443) traffic while blocking everything else, providing basic but effective server protection.<\/p>\n\n\n\n<h2 id=\"h2_expert-level-commands-for-automation-and-scale\" class=\"wp-block-heading\">Expert Level: Commands for Automation and Scale<\/h2>\n\n\n\n<p>These commands help you with automation and advanced system administration for managing websites at scale.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1032\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale.webp\" alt=\"Table of expert level\" class=\"wp-image-75444 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-300x194.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-1024x660.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-768x495.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-1536x991.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-600x387.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-1200x774.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-730x471.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-1460x942.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-784x506.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-1568x1011.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/04_expert_level_commands_for_automation_and_scale-877x566.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1032;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Service Management<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">29. systemctl: Controls systemd services on modern Linux distributions<\/h4>\n\n\n\n<p>Use <strong>systemctl &lt;action&gt; &lt;service&gt;<\/strong> to manage system services. Common actions include start, stop, restart, enable, disable, and status.<\/p>\n\n\n\n<p><code><strong>systemctl status nginx<\/strong><br><strong>systemctl restart mysql<\/strong><\/code><\/p>\n\n\n\n<p>The first command shows detailed NGINX status including recent log entries. The second restarts your database server to apply any configuration changes you might have made to the \u201cmysql\u201d configuration.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">30. crontab: Schedules automated tasks to run at specific times<\/h4>\n\n\n\n<p>You don\u2019t want to wake up in the middle of the night to run server commands. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/cron-jobs\/\">Cron jobs<\/a> can do that for you.<\/p>\n\n\n\n<p>To edit your personal cron table, run <strong>crontab -e<\/strong> and you\u2019ll see all your existing cron entries.<\/p>\n\n\n\n<p>Tasks are specified using the format: minute, hour, day, month, weekday, and command.<\/p>\n\n\n\n<p><strong><code>0 2 * * * \/usr\/local\/bin\/backup-website.sh<\/code><\/strong><\/p>\n\n\n\n<p>For instance, the above cron job runs a backup script (\u201cbackup-website.sh\u201d) daily at 2 a.m.<\/p>\n\n\n\n<p>You can use cron jobs for automated backups, log rotation, and maintenance tasks and so much more in your production environments.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-advanced-text-processing\">Advanced Text Processing<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">31. sed: Stream editor for filtering and transforming text<\/h4>\n\n\n\n<p>Use <strong>sed &#8216;s\/old\/new\/g&#8217; &lt;filename&gt;<\/strong> to replace text in files. Add \u201c-i\u201d to edit files directly instead of just displaying results.<\/p>\n\n\n\n<p><strong><code>sed -i 's\/old_database\/new_database\/g' \/var\/www\/html\/wp-config.php<\/code><\/strong><\/p>\n\n\n\n<p>This replaces all occurrences of &#8220;old_database&#8221; with &#8220;new_database&#8221; in your WordPress config file; useful for database migrations.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">32. awk: Pattern scanning and data extraction tool<\/h4>\n\n\n\n<p>Running <strong>awk &#8216;{print $1}&#8217; &lt;filename&gt;<\/strong> extracts the first field (column) from each line. Excellent for processing log files and structured data.<\/p>\n\n\n\n<p><strong><code>awk '{print $1}' \/var\/log\/nginx\/access.log | sort | uniq -c | sort -nr | head -10<\/code><\/strong><\/p>\n\n\n\n<p>This extracts IP addresses from access logs, counts them, and shows the top 10 visitors to your website.<\/p>\n\n\n\n<h2 id=\"h2_real-world-application-scenarios\" class=\"wp-block-heading\">Real-World Application Scenarios<\/h2>\n\n\n\n<p>Let&#8217;s have a quick review, and then put these commands together for common situations you&#8217;ll face <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">managing your VPS<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Command Prompt:<\/td><td>Stands For:<\/td><td>What It Does:<\/td><\/tr><tr><td>ls<\/td><td>List<\/td><td>Lists the contents of your current directory<\/td><\/tr><tr><td>pwd<\/td><td>Print working directory<\/td><td>Displays the full path of where you are located<\/td><\/tr><tr><td>cd<\/td><td>Change Directory<\/td><td>Changes your current directory to the indicated location<\/td><\/tr><tr><td>mkdir<\/td><td>Make Directory<\/td><td>Creates a directory (a folder) in the requested location<\/td><\/tr><tr><td>cp<\/td><td>Copy<\/td><td>Copies files and directories from point A to point B<\/td><\/tr><tr><td>mv<\/td><td>Move<\/td><td>Moves (or renames) files and directories<\/td><\/tr><tr><td>cat<\/td><td>Concatenate<\/td><td>Displays all the contents of a file in your terminal<\/td><\/tr><tr><td>head<\/td><td>&#8211;<\/td><td>Shows the first 10 lines of a file<\/td><\/tr><tr><td>tail<\/td><td>&#8211;<\/td><td>Shows the last 10 lines of a file<\/td><\/tr><tr><td>ps<\/td><td>Process Status<\/td><td>Shows the processes running on your system at the time it was run<\/td><\/tr><tr><td>top<\/td><td>&#8211;<\/td><td>Displays a dynamic, real-time view of the processes running on your system<\/td><\/tr><tr><td>htop<\/td><td>&#8211;<\/td><td>A more UI focused version of \u201ctop\u201d<\/td><\/tr><tr><td>kill<\/td><td>&#8211;<\/td><td>Terminates the specified process<\/td><\/tr><tr><td>df<\/td><td>Disk Free<\/td><td>Displays the disk space usage for all mounted file systems<\/td><\/tr><tr><td>free<\/td><td><\/td><td>Displays the amount of free and used memory in the system<\/td><\/tr><tr><td>du<\/td><td>Disk Usage<\/td><td>Displays the disk usage for a specific directory<\/td><\/tr><tr><td>grep<\/td><td>Global Regular Expression Print<\/td><td>Searches for text patterns within files<\/td><\/tr><tr><td>find<\/td><td>&#8211;<\/td><td>Finds files and directories based on your criteria<\/td><\/tr><tr><td>chmod<\/td><td>Change Mode<\/td><td>Modifies file system permissions<\/td><\/tr><tr><td>ping<\/td><td>Packet Internet Groper (but most people just say \u201cPing\u201d)<\/td><td>Checks if your server can connect to another website or server<\/td><\/tr><tr><td>curl<\/td><td>Client URL<\/td><td>Transfers data to or from servers<\/td><\/tr><tr><td>netstat<\/td><td>Network Statistics<\/td><td>Displays network connections and listening services.<\/td><\/tr><tr><td>ss<\/td><td>Socket Statistics<\/td><td>An updated version of netstat<\/td><\/tr><tr><td>sudo<\/td><td>Super User Do<\/td><td>Executes commands with elevated privileges<\/td><\/tr><tr><td>chown<\/td><td>Change Owner<\/td><td>Changes file and directory ownership<\/td><\/tr><tr><td>ssh-keygen<\/td><td>Secure Shell Key Generation<\/td><td>Generates SSH Key pairs for more secure authentication<\/td><\/tr><tr><td>ufw<\/td><td>Uncomplicated Firewall<\/td><td>A user-friendly firewall for basic server protection<\/td><\/tr><tr><td>systemctl<\/td><td>System Control<\/td><td>Controls systemd services on modern Linux distros<\/td><\/tr><tr><td>crontab<\/td><td>Cron Table<\/td><td>A list of all the automated tasks (crons) currently scheduled<\/td><\/tr><tr><td>sed<\/td><td>Stream Editor<\/td><td>Filters and adjusts text in files<\/td><\/tr><tr><td>awk<\/td><td>Named after its developers<\/td><td>Pattern scanning and data extraction tool<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">When Your Website Loads Slowly<\/h3>\n\n\n\n<p>Start by checking what&#8217;s consuming your server resources.<\/p>\n\n\n\n<p>Run <strong>top <\/strong>or<strong> htop<\/strong> to see which processes are using the most CPU and memory. You\u2019re looking for any processes consuming over 50% of your resources and if any of them can be killed.<\/p>\n\n\n\n<p>If resource usage looks normal, check your available disk space with \u201cdf -h.\u201d If you notice usage exceeding 90% on any filesystem, free up space as soon as possible. Everything drastically slows down when your server is full.<\/p>\n\n\n\n<p>Next, verify your web server is actually running properly.<\/p>\n\n\n\n<p>Use <strong>ps aux | grep nginx<\/strong> (or <strong>ps aux | grep apache<\/strong> if you&#8217;re using <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/nginx-vs-apache\/\">Apache<\/a>) to confirm your web server processes are active and responding.<\/p>\n\n\n\n<p>Check your error logs while testing your site.<\/p>\n\n\n\n<p>Run <strong>tail -f \/var\/log\/nginx\/error.log<\/strong> in one terminal, then visit your website in a browser window. If there are any errors running your site, you should see them immediately appear in your terminal.<\/p>\n\n\n\n<p>Finally, test your website&#8217;s response time directly from the server with <strong>curl -I https:\/\/yoursite.com<\/strong>. This bypasses any network issues and tells you exactly how long your server takes to respond.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Setting Up a Secure Development Environment<\/h3>\n\n\n\n<p>Create a dedicated user account for development work instead of using root for everything:<\/p>\n\n\n\n<p><strong><code>sudo adduser devuser<\/code><\/strong><\/p>\n\n\n\n<p>Set up a proper directory structure for your staging site. This keeps development files organized and separate from production:<\/p>\n\n\n\n<p><strong><code>mkdir -p \/var\/www\/staging\/{public,logs,backups}<\/code><\/strong><\/p>\n\n\n\n<p>Fix the ownership so your web server can access the files properly:<\/p>\n\n\n\n<p><strong><code>chown -R devuser:www-data \/var\/www\/staging<\/code><\/strong><\/p>\n\n\n\n<p>Set appropriate permissions &#8211; 755 allows the owner to read\/write\/execute while giving others read and execute access:<\/p>\n\n\n\n<p><strong><code>chmod -R 755 \/var\/www\/staging<\/code><\/strong><\/p>\n\n\n\n<p>Configure your firewall to allow only essential services. Start by allowing SSH so you don&#8217;t lock yourself out:<\/p>\n\n\n\n<p><strong><code>sudo ufw allow 22<\/code><\/strong><\/p>\n\n\n\n<p>Allow web traffic on the standard HTTP and HTTPS ports:<\/p>\n\n\n\n<p><code><strong>sudo ufw allow 80<\/strong><br><strong>sudo ufw allow 443<\/strong><\/code><\/p>\n\n\n\n<p>Enable the firewall to start blocking unauthorized connections:<\/p>\n\n\n\n<p><strong><code>sudo ufw enable<\/code><\/strong><\/p>\n\n\n\n<h2 id=\"h2_command-combinations-that-show-real-proficiency\" class=\"wp-block-heading\">Command Combinations That Show Real Proficiency<\/h2>\n\n\n\n<p>Advanced users combine commands to solve complex problems:<\/p>\n\n\n\n<p>The below command finds nginx processes, extracts their PIDs, and kills them all in one line:<\/p>\n\n\n\n<p><strong><code>ps aux | grep nginx | awk '{print $2}' | xargs kill -9<\/code><\/strong><\/p>\n\n\n\n<p>This find command automatically removes log files older than 7 days to free disk space:<\/p>\n\n\n\n<p><strong><code>find \/var\/log -name \"*.log\" -mtime +7 -delete<\/code><\/strong><\/p>\n\n\n\n<p>This combined du command shows the 5 largest directories in your web root, sorted by size:<\/p>\n\n\n\n<p><strong><code>du -sh \/var\/www\/* | sort -hr | head -5<\/code><\/strong><\/p>\n\n\n\n<p>If you\u2019re getting 404 errors, run this command to count them in your access log to identify broken links:<\/p>\n\n\n\n<p><strong><code>grep -c \"404\" \/var\/log\/nginx\/access.log<\/code><\/strong><\/p>\n\n\n\n<h2 id=\"h2_so-what-comes-next\" class=\"wp-block-heading\">So, What Comes Next<\/h2>\n\n\n\n<p>Once you&#8217;re comfortable with these 30 commands, you&#8217;ll want a quality VPS provider that&#8217;s fast and flexible while providing complete control for your growing skills.<\/p>\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">DreamHost&#8217;s VPS hosting<\/a> offers just that. You get full root access to experiment safely, SSD storage that makes file operations lightning-fast, and scalable resources when your projects outgrow their current limits.<\/p>\n\n\n\n<p>We also include automatic backups so you can experiment fearlessly, and our support team understands Linux environments when you need help with complex configurations.<\/p>\n\n\n\n\n<div class=\"article-cta-shared article-cta-small article-cta--product\">\n\t<div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/product-cta-vps-hosting-877x586.webp 1x, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/product-cta-vps-hosting.webp 2x\"  alt=\"VPS Hosting\" \/><\/div>\n\n\t<a href='https:\/\/www.dreamhost.com\/hosting\/vps\/' class='link-top' target='_blank' rel='noopener noreferrer'>\n\t\t<span>VPS Hosting<\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\" width=\"15\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n\n\t<div class=\"content-btm\">\n\t\t<h2 class=\"h2--md\">\n\t\t\tWhen You Expect Performance Get DreamHost VPS\n\t\t<\/h2>\n\t\t<p class=\"p--md\">\n\t\t\tBig or small, website or application &#8211; we have a VPS configuration for you.\n\t\t<\/p>\n\n\t\t        <a\n            href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            See More                    <\/a>\n\n\t<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Learn the 30 essential Linux commands you need to manage your VPS server. From basic navigation to troubleshooting and everything in between.<\/p>\n","protected":false},"author":1079,"featured_media":75430,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_metadesc":"Learn the 30 essential Linux commands you need to manage your VPS server. From basic navigation to troubleshooting and everything in between.","toc_headlines":"[[\"h-understand-your-current-proficiency-with-linux-commands\",\"Understand Your Current Proficiency With Linux Commands\"],[\"h-foundation-level-commands-every-developer-must-master\",\"Foundation Level: Commands Every Developer Must Master\"],[\"h2_professional-level-commands-for-managing-development-workflows\",\"Professional Level: Commands for Managing Development Workflows\"],[\"h2_infrastructure-level-commands-for-production-environments\",\"Infrastructure Level: Commands for Production Environments\"],[\"h2_expert-level-commands-for-automation-and-scale\",\"Expert Level: Commands for Automation and Scale\"],[\"h2_real-world-application-scenarios\",\"Real-World Application Scenarios\"],[\"h2_command-combinations-that-show-real-proficiency\",\"Command Combinations That Show Real Proficiency\"],[\"h2_so-what-comes-next\",\"So, What Comes Next\"]]","hide_toc":false,"footnotes":""},"categories":[550,804],"tags":[],"class_list":["post-42725","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","category-web-hosting"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>30+ Essential Linux Commands You Need To Know - DreamHost<\/title>\n<meta name=\"description\" content=\"Learn the 30 essential Linux commands you need to manage your VPS server. From basic navigation to troubleshooting and everything in between.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"30+ Essential Linux Commands You Need To Know\" \/>\n<meta property=\"og:description\" content=\"Don\u2019t get lost when you log into your VPS. Learn the 30 Linux commands that actually matter for website management, server troubleshooting, and VPS administration.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-08T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-08T15:30:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/1220x628_ogimage_30_essential_linux_commands_you_need_to_know.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Matt Stamp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"30+ Essential Linux Commands You Need To Know\" \/>\n<meta name=\"twitter:description\" content=\"Don\u2019t get lost when you log into your VPS. Learn the 30 Linux commands that actually matter for website management, server troubleshooting, and VPS administration.\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matt Stamp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"30+ Essential Linux Commands You Need To Know - DreamHost","description":"Learn the 30 essential Linux commands you need to manage your VPS server. From basic navigation to troubleshooting and everything in between.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/","og_locale":"en_US","og_type":"article","og_title":"30+ Essential Linux Commands You Need To Know","og_description":"Don\u2019t get lost when you log into your VPS. Learn the 30 Linux commands that actually matter for website management, server troubleshooting, and VPS administration.","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2025-09-08T15:00:00+00:00","article_modified_time":"2025-09-08T15:30:32+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/1220x628_ogimage_30_essential_linux_commands_you_need_to_know.webp","type":"image\/webp"}],"author":"Matt Stamp","twitter_card":"summary_large_image","twitter_title":"30+ Essential Linux Commands You Need To Know","twitter_description":"Don\u2019t get lost when you log into your VPS. Learn the 30 Linux commands that actually matter for website management, server troubleshooting, and VPS administration.","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Matt Stamp","Est. reading time":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/"},"author":{"name":"Matt Stamp","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/43673746e4de1ea74d12de479cd1b7e1"},"headline":"30+ Essential Linux Commands You Need To Know","datePublished":"2025-09-08T15:00:00+00:00","dateModified":"2025-09-08T15:30:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/"},"wordCount":3693,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/1460x1095_blog_hero_30_essential_linux_commands_you_need_to_know.webp","articleSection":["Tutorials","Web Hosting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/","name":"30+ Essential Linux Commands You Need To Know - DreamHost","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/1460x1095_blog_hero_30_essential_linux_commands_you_need_to_know.webp","datePublished":"2025-09-08T15:00:00+00:00","dateModified":"2025-09-08T15:30:32+00:00","description":"Learn the 30 essential Linux commands you need to manage your VPS server. From basic navigation to troubleshooting and everything in between.","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/1460x1095_blog_hero_30_essential_linux_commands_you_need_to_know.webp","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/12\/1460x1095_blog_hero_30_essential_linux_commands_you_need_to_know.webp","width":1460,"height":1095,"caption":"30+ Essential Linux Commands You Need To Know"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/linux-commands\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dhblog.dream.press\/blog\/"},{"@type":"ListItem","position":2,"name":"30+ Essential Linux Commands You Need To Know"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/43673746e4de1ea74d12de479cd1b7e1","name":"Matt Stamp","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/11\/matt-stamp-dreamhost-150x150.jpeg","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/11\/matt-stamp-dreamhost-150x150.jpeg","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/11\/matt-stamp-dreamhost-150x150.jpeg","caption":"Matt Stamp"},"description":"Matt is a DevOps Engineer at DreamHost. He is responsible for infrastructure automation, system monitoring and documentation. In his free time he enjoys 3D printing and camping. Follow Matt on LinkedIn: Lhttps:\/\/www.linkedin.com\/in\/matt-stamp-7a8b3a10a","url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/mattstamp\/"}]}},"lang":"en","translations":{"en":42725,"es":42757,"de":52895,"pl":57439,"pt":57442,"uk":57496,"ru":57539,"it":67933,"fr":69464,"nl":72661},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/42725","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1079"}],"replies":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/comments?post=42725"}],"version-history":[{"count":17,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/42725\/revisions"}],"predecessor-version":[{"id":75468,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/42725\/revisions\/75468"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/75430"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=42725"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=42725"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=42725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}