Linux commands cheatsheet for every developer

The tasks of the developers were previously confined to coding, testing and pushing of code to the repository. A developer was never bothered about where the application was run and how the environment or the server was set up. Now with the DevOps culture taking a front seat, it is imperative for a developer to know the basic commands and working of the servers where their programs are running. In this post, we are going to see the most common Linux commands that a developer should know for supporting basic DevOps.

Update – May 15 – 2019: Youtube video tutorial on the Linux commands discussed here.

Linux Environment

About 90% of the production servers operating in the cloud are run on Linux operating system. Google and Amazon have very good support for the Linux servers and there are different flavours of Linux available. Though there are different releases, the commands are mostly similar across them. As an icing on the cake, Mac OS which itself is based on Unix also recognizes most of the commands we are about to discuss.

Following would be a list of common Linux based operating systems.

  • Centos – This is the most common flavour of OS for the enterprise environment. This managed by RedHat enterprises.
  • Ubuntu – Another very common choice of Linux. This most widely used on Desktops and they have a dedicated trimmed down version of servers which is used in many mission-critical applications.
  • OpenSuse
  • Fedora

Each of the above listed operating systems has got their own package manager ( for installation of programs and dependencies), but the commands we discuss are going to be common for all.

Linux Commands

Let’s see what are common commands we would need as a developer in a Linux system. We will be having it organized based on the operations. Please note that you need to either run a local Linux system or have access to a Linux terminal for trying out the commands.

In case you are the TL;DR person, you can refer to the following gist for the commands:
Linux command cheatsheet gist
I would suggest to go through the details to understand each command and keep the gist handy for quick reference.

Connecting to the remote server using SSH

The first command that you would need to connect to a server is SSH. This command allows you to connect to a remote server using its IP or the hostname. Following would be the basic usage.

ssh user@hostname/IP

ssh root@234.134.40.54
ssh root@myserver.mydomain.com

This will ask for the password and you can enter the password for the provided user. On successful authentication, you will be provided with a shell where you can enter the commands and access the files on the server.

Connecting using a private key pem file.

There are cases where you would need to access the remote server using a key file ( pem file ). In that case, you need to specify the key file location using the following format

ssh -i /path/to/file.pem root@123.123.123.123

In case you want to get the verbose output, you can use -v flag as below.

ssh -v -i /path/to/file.pem root@123.123.123.123

Directory navigation commands

Once you have access to the terminal, you would need to move around the locations or get the current location. Let’s see what are the commands.

Getting the current working directory

Type the following command to get the current directory

pwd

This will print the current directory ( the directory where you are right now )

Changing the directory

To change to a particular directory, you can type the following command in the terminal

cd /path/to/directory

Listing of files

We can use the following command to list the files in a directory

ls -l

You can see that the above commands list the files. This will also show the size of the file, permissions and the owner and group of the file.

Listing hidden

You can list the hidden files using the following version of ls.

ls -la

Listing files based on created time

We can list the files in the order of creation using the following command.

ls -lt

Directory commands

Let’s see the commands to manage the directories.

Creating a directory

mkdir name-of-dir

This will create the directory in the current location with name-of-dir

Removing a directory

rmdir name-of-dir

This will delete the directory provided. This command will only work when the directory is empty.

Removing all the files in a directory

For deleting all the files, we need to use the following command

rm -rf /path/to/dir

This will delete all the files in the directory recursively and the -f will make sure that no confirmation is asked for the deletion.

Please be careful about the rm -rf command as this could delete the files on the specified directory. Make sure that you specified the correct path without any space .

Basic vi commands

The most common editor available in the Linux environment would be vi. But this editor uses some special key combinations and is terminal based. Let’s see how to use vi editor.

Opening a file

You can use the following command to open the file.

vi filename

This will open the file as below

For editing a file, you need to press i and will show “INSERT” mode at the bottom.

Now you can move around the file using arrow keys and insert content. Now to save the file, you need to press <Esc> key and this will put the editor in the command mode.

Saving the file

To save the file, you need to be in the command mode ( by clicking on the <Esc> mode ) and then press the following keys

:w

Quitting the file

:q

Quitting the file by ignoring changes

:q!

Tailing the file

This is one common requirement when we are monitoring the logs of an application. We would need to see the logs as it is coming in the file. We can use the following command for that

tail -f /path/to/the/file.log

This would display the content as its coming.

Listing the last 10 lines

tail -n 10 /path/to/file.log

This will list the last 10 files from the log file.

Resource monitoring ( CPU, Memory, free space )

Most of the times we would need to check the resource usage of a server or a particular process. Let’s see what are the commands available for the same.

TOP command for resource usage

You can run the top command it will list the CPU usage, RAM and the commands.

top

You can see the relevant details in the highlighted section.

Getting the free memory

You can also get the free memory in the system using the following command:

free -m

This will show the total memory and the available memory in the server

Disk space usage

Run the following command for getting the disk usage details

df

This will display the disk mounts and the available as well as free space.

Size of the files and folders in a location

Run the following command to see the files and folder sizes

du -sh *

This will display the folders, files and the corresponding sizes.

Downloading from a link

Most often we would need to download a file from the internet or access a URL file. We can use wget for the same using the following format.

wget https://www.dropbox.com/file.zip

This would download the file.zip to the current directory using HTTP. You can also the same to download an HTML file

wget https://www.google.com

wget may not be installed by default in the server. You may need to get it installed using the respective package manager for the operating system.

Calling an API from command line

We can use cURL command to call an API using GET, POST, PUT etc.

Making a GET call

curl -X GET "http://server:port/api/endpoint"

Placing a GET call with headers

curl -H "Authorization:Basic xxxx" -X GET "http://server:port/api/endpoint"

We can use multiple -H flags and pass multiple headers

Making a POST call with params

curl -H "Authorization: Basic xxx" -H "Content-Type: application/x-www-form-urlencoded" --data "grant_type=password&username=test&password=secret&client_id=trustedService" -X POST http://localhost:50002/oauth/token

Here we are passing the “Authorization”, “Content-Type” header and the post params using –data

Running a command continuously

There are situations wherein we would need to monitor the status of a file transfer or run a command continuously. We could use the watch command in these cases. Following is the format.

watch command

In the below example we are using watch on the listing and we can see the file changes every 2 seconds

watch ls -l

Getting the network details ( IP address )

Another very common command we need to use is for getting the network details ( IP address, hardware  Mac address and the interfaces). We can use the ifconfig command for that. This will generate a response like below which lists the interfaces, IP address and the hardware address ( Mac address )

ifconfig

Finding the process id of an application using its port

We have our applications ( Java spring boot mostly ) running in remote servers and it’s not easy to just find process id when multiple services are running in the same server. In those cases, we can use the following command

lsof -i:portnumber

In the below sample, we are trying to find out the process id for elasticsearch using the port on which it is running.

Killing a process

We can kill a process by using the following command

kill -9 processid

Here -9 is a kill status which means a graceful kill command. The application will be given an instruction to shut down and the process any cleanup.

You can also kill by the name of the process using the following command.

killall processname

Conclusion

The commands we have discussed above is only the basic commands in Linux. There are different combinations and switches that extend the above commands and lot of other commands that we can use. I will try to keep this list updated with more suggestions and common commands.

Let us know your queries and comments.

regards
Microideation

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *