TABLE OF CONTENTS
- Part 1. A Quick Introduction to SSH
- Part 2. Navigation – Commands you’ll use a lot
- Part 3. Active Server Management Commands
- Part 4. Creating and editing files
- Part 5. Working with Compressed Files
- Part 6. Searching your system
- Part 7. Monitoring your system
- Part 8. Other useful commands
- Part 9. The Linux Manual
- Part 10. Exit
Connecting to your server for the very first time can be a daunting task, especially for non-developers. At some point in your GridPane journey, you’re likely going to need to SSH in and run a few commands.
Fortunately, you really don’t need to know a whole lot to take advantage of what GridPane has to offer, and it is much simpler than it appears at first glance. If you’re concerned that you’ll accidentally break things, you should know that this isn’t actually that easy to do. Just to be sure though, you may wish to spin up a test server for a couple of days so you’re free to do whatever you wish with zero real-world consequences for you or your clients.
GridPane allows you to do some very cool things (especially with GP-CLI) very quickly, simply by typing a few commands inside your server. The goal of this article is to give you the info you need to get comfortable connecting to your servers and running basic commands. If you take just a little time to get comfortable and build your skills, the entire GridPane knowledge base will become accessible to you whenever you need anything contained herein.
Using the command line can make your new website setup and management much more efficient and it is worth taking the time to learn the fundamentals.
Part 1. A Quick Introduction to SSH
SSH stands for “Secure Shell”. It’s a method of securely connecting from one computer to another. In our case, it allows us to connect directly to our servers so that we can access and manage them.
It’s the most common way for safely managing remote servers, and on GridPane, it is the only method we allow for connecting to your servers.
SSH uses numerous encryption technologies (symmetric encryption, asymmetric encryption, and hashes) to verify and secure your connection to your server and your server to you.
SSH AND WORDPRESS
If you’ve been around hosting for any length of time you’ve likely connected to your servers via FTP or SFTP and you’ve seen all of your website’s files and folders.
SSH won’t allow you to directly upload or download files from your computer, but it will allow you to view and edit them, zip them ready for download, unzip uploaded zip files, take database backups, and more.
Connecting and managing your sites via SSH is fast, secure, and efficient, and this is why sysadmins use the command line to manage WordPress instead of logging into each site’s dashboard. It’s highly unlikely that you’ll ever go back the traditional way once you get started.
CONNECTING TO YOUR SERVER BY SSH
We have numerous guides on how to create a public and private SSH key, and add your public key to your GridPane servers. Please see the following guides to get yourself set up and ready to go.
Part 3. Active Server Management CommandsThis is part will detail the commands that will allow you to actively make changes to your server. This includes how to move, copy, delete, zip, unzip and more.
CREATE A DIRECTORYYou can make (create) a directory with the
mkdircommand. To do this, you can either navigate to where you wish to create your new directory, or you create it using the full path.For example, if you wanted to create an extra folder in your htdocs folder you could:
cd /var/www/yourwebsite.com/htdocsAnd then:
mkdir mynewdirectoryOr you could create it with:
CREATING NEW FILESYou can create a new file with the
touchcommand. However, normally you’ll use
nano filename.extensionto create a file and open it with the nano editor at the same time. More information on this is in part 4.An example using the
COPYYou can create a copy of a file or folder with the
cpcommand. This can come in very handy if you wish to make a copy of a file before editing, and it’s also useful for making certain Nginx changes persistent (you may see this in various other KB articles).To use this command, you first type
cpfollowed by the file you wish to make a copy of, followed by the desired location and filename of your copy. For example:
cp main-context.conf /_custom/main-context.confThink of the command like so:
cp SOURCE DESTINATIONVariablesBelow are some useful variations of the
cp -fIf there is already another file with the same name in the destination you’re copying to, this will override that file with the one you are copying.
cp -iThis will give you a warning message before copying if a file with the same name already exists.
cp -nThis will stop the copy from proceeding if there’s an existing file with the same name in the destination.
mvcommand will allow you to move files and directories from one place to another.
mv SOURCE DESTINATIONVariations
mv file.ext /dir/This moves to the directory you specify.
mv file.ext/ ..This will move the file up one directory.
mv file.ext /dir/newname.textThis variation will both move and also rename the file.
VIEWING THE CONTENTS OF EXISTING FILESThe following commands will allow you to view the contents of a file.
catThis will display the entire contents of a file. Example usage:
cat wp-config.phpOr you can use the whole destination:
headThis will display the first 10 lines of a file. Example usage:
tailThis will display the last 10 lines of a file. Example usage:
tail -fView a file in real-time. This is particularly useful for viewing logs while you’re running commands or using the GridPane control panel to toggle things on and off. Here’s an example worth noting down:
tail -f /var/log/gridpane.log
REMOVE (DELETE) STUFFYou can remove (DELETE) files and directories from your server with the
rmcommand. This is where you need to start being careful as removing files and directories has real consequences that can/will affect your sites and servers. That said, it is still useful to know and will come in handy at some point down the line.Here’s a simple example of removing a text file:
rm myoldfile.txtYou can also delete multiple files at once like this:
rm myoldfile1.text myoldfile2.text myoldfile3.txt
rm -r directoryname– This is a powerful command that can save a lot of time vs trying to do the same thing over SFTP. It will delete the directory and ALL of its contents. This means all sub-directories and files inside it.So, for example, you could remove an entire website’s htdocs folder with:
rm -r /var/www/example.com/htdocsObviously, we don’t recommend you test that, but removing an entire htdocs folder can be handy for manual website migrations.
rmdirThis command can be used to remove (delete) an empty directory. Example usage:
VIEW FILE SIZESThe
du(disk usage) command is great for checking how much disk space usage each of your websites and other files/directories are taking up on your servers. Used on its own usually isn’t going to be all that useful, but the variations below are well worth knowing.Variations
du -hDisplays results in human-readable format (bytes, KB, MB, GB etc).
du -shDisplays the grand total disk space of a directory in a human-readable format.Here is a useful, more advanced command that you may wish to copy down. If you first navigate to the directory where all of your websites are stored with:
cd /var/wwwThis command will then list them by order of size (largest at the bottom), and display their size in human-readable format:
du -h --max-depth=1 | sort -h
VIEW SYSTEM DISK SPACEWith Monit installed on all servers, you won’t have much need for this command. You can view your disk usage any time by clicking on the pie chart icon next to each of your servers. However, it would be odd to leave it out, so you can check your system disk space usage with the
df -hDisplays results in a human-readable format.
df -TThis will display system file types in an additional column.
Part 4. Creating and editing files
We touched on the
touch command briefly in part 3 for creating a file, but the same can be accomplished with
nano and this has the added benefit of opening your new file so you can begin adding your code to it immediately. For example:
You can create any type of file with nano by simply specifying the correct extension at the end of the file name. Examples: –
Once you added your content to the file, you can save it with CTRL+O and then confirm with Enter. Or, you can save and exit at the same time with CTRL+X and then hit Y (for yes), and then Enter.
To exit nano, you need to CTRL+X. You will be prompted to save your changes or disregard them if you haven’t already saved them.
While there are other options available, we recommend using nano when given multiple options.
Part 5. Working with Compressed Files
You may need to
unzip files when working on the command, or work with
Tar is short for “Tape Archive”, and is sometimes referred to as tarball. This type of file is in the “Consolidated Unix Archive format” and is used to archive multiple files into one single file. Regular tar files are not compressed. Compressed tar files are in the tar.gz format.
zip command is exactly what you think it is. It will zip up a directory. For example:
zip -m filename.zip foldername This compresses a folder and then deletes the original, leaving just the zipped version.
zip -d filename.zip foldername deletes a file from the existing zip archive you specify.
unzip is also exactly what it sounds like. You can use this command to unzip and zipped file as follows:
If the zip file is passworded you will be prompted for the password after running the above.
unzip filename.zip -x excludeme.ext This will exclude a specific file from being extracted. To exclude a directory it looks like this:
unzip filename.zip -x "*.foldername/*"
unzip filename1.zip filename2.zip filename3.zip This will all you can unzip multiple files at the same time.
LIST THE CONTENTS OF A ZIP FILE
You can view the contents of a zipped file with
unzip -l. For example:
unzip -l filename.zip
CREATING TAR FILES
Tar has a few extensions that allow you to specify exactly how you wish to create your tar file: –
p This preserves the details of the file owner and file permissions in the archive.
c This is used to create a tar file.
v This will verbosely show the
tar files progress while it’s being created.
z This enables gzip compression.
-f option means that next is the name of the target tar file.
To create a .tar file, you can use
tar -cf. For example:
tar -cf tarfilename.tar /target/directory
To show what’s happening you can add in the
-v. For example:
tar -cvf tarfilename.tar /target/directory
To compress the file and view the verbose output, add the
tar -cvzf tarfilename.tar /target/directory
EXTRACTING TAR FILES
Extracting tar files works the same as the way you create them, except instead of creating with
-c we extract with
-x. For example:
tar -xf tarfilename.tar
View the verbose output with:
tar -xvf tarfilename.tar
You can learn more about working with .tar files here: https://man7.org/linux/man-pages/man1/tar.1.html
Part 6. Searching your system
If you need to find specific files or data in your server, there are a couple of powerful commands that you can use to find what you need.
FIND – FIND FILES AND DIRECTORIES
Find files with the
The syntax is as follows:
find starting/path criterion "search term"
Here you can specify a specific directory, for example, you could search only your website files with the starting path: /var/www. Or, you can use the following as your starting path: –
/ A single slash will search the whole system.
. A dot will search the directory you’re currently in.
You can narrow down your search with the following criteria: –
-name Search by file name.
-user Search files belonging to a specific system user.
-size Search files of a specific size.
-type d Search only for directories.
-type f Search only for files.
-maxdepth X Search the current directory as well as all sub-directories X levels deep.
Below are some examples to illustrate.
Search for all wp-config.php files inside of /var/www: –
find /var/www -name wp-config.php
Search for all directories named “htdocs” inside of /var/www: –
find /var/www type d -name htdocs
Search for the main-context.conf inside /etc: –
find /etc -name main-context.conf
GREP – SEARCH FILES BY CONTENT
Grep stands for “global regular expression print”. It allows you to search for files based on their content, and search inside files for specific strings of data.
It’s an incredibly powerful tool and it can be combined with the
find command. Here we’ll just touch on the basics.
Here’s a simple example of using the grep command to search a file for a specific phrase:
grep searchword/term filename
Let’s search a websites wp-config.php file for the word “prefix”: –
grep prefix /var/www/example.com/wp-config.php
grep -i searchword/term filename This searches for all variations of a search word/term ignoring the case (grep is case-sensitive).
grep -c searchword/term filename This will count the number of instances of a search word/term in the file.
grep -n searchword/term filename This will display the line number/s along with the output.
grep -l searchword/term */path This will list all the files that contain the search word/term.
There is a whole lot more to the grep command that we’ll look at covering another time.
Part 7. Monitoring your system
Linux comes with the built-in monitoring tool
top. By default, we also install
htop on your servers during provisioning. Both of these are extremely useful tools that you can open simply by typing their names. Go ahead and give it a go (and then exit them with CTRL+C).
We have separate knowledge base articles for using each of these tools. You can check them out here:
Part 8. Other useful commands
Here are a few more commands that will come in handy on your Linux journey.
WGET – DOWNLOAD FROM A WEBSITE
You can download a file from a source outside of your server with the
wget command. The syntax for this is as follows:
wget OPTIONS URL
The options are optional. For example, you could download a file to your current directory like this:
You can download a file to a different directory like this:
wget /save/file/here https://example.com/optimuscacheprime.tar.gz
Learn more here: https://linux.die.net/man/1/wget
PWD – PRINT NAME OF CURRENT/WORKING DIRECTORY
pwd will show you the filepath of exactly where you are on your server.
CLEAR YOUR TERMINAL WINDOW
If you ever wish to clear your terminal so that it’s nice and clean and not full code, you can do this in a couple of ways.
clear Type clear and hit enter. Hit CTRL+L. Both of these will clear all of the text from your screen, leaving you with a nice and tidy terminal to continue working in.
Part 9. The Linux Manual
Linux comes with a user manual built-in. If you wish to learn more about any of the commands in this article you can look them up inside the Linux manual and see their variations plus a description of what they all do.
To use the Linux manual, you can use the
man command. For example:
Linux also has another command called
whatis. This will display a one-line manual page description for the command you’re looking up. For example:
You can learn more by looking it up directly in the Linux manual 🙂
Part 10. Exit
And, finally, you can exit (disconnect from) your servers with: