How to Control System Processes via SSH

Using SSH List and CP

The heart of each OS are its (apart from the Kernel of course) processes. Linux provides various ways to control the current running processes on the server and we will list a couple of examples to illustrate them. Probably the command you would most often use is the “ps” command which lists all processes based on a certain criteria.

Please note that you can not manipulate the system processes (executing ps, kill, pgrep, top and strace) on the shared server, since your account will not have such privileges.

However, on our dedicated servers you will have root permissions and you will be able to control the system processes.

There are 5 columns in the result, each showing a different set of information. PID shows the process ID number. TTY print the file name of the terminal connected to standard input for that particular process. STAT shows the process state (R means running and S means an interruptible sleep (waiting for an event to complete)).

TIME shows the time the process is running for and COMMAND shows the command itself.

To see the same information (and a bit more) but updated in realtime you can use the following command:

topIn some cases you might need to stop a certain process.

The graceful way to do this is to send a SIGHUP (or SIGTERM) signal to the process and ask it politely to stop itself.

To do this you can use:

kill -15 < pid-ID-number >

or in the above example with the wget process:

kill -15 5032

In some cases however a process can decide to ignore this (graceful) signal.

To kill the process in that case, you can force kill it using:

kill -9 5032

which will send the request directly to the Kernel and cannot be ignored.

A shorter variant of ps with an option to filter the result by process name is “pgrep”.

For example:

pgrep -u root sshd

will only list the processes called sshd and owned (-u argument) by the root user.

Each process will be listed on new line, which allows chaining the commands.

An example of chained commands would be:

strace -p `pgrep -u root sshd`

The above example will run strace command and will attach it to the process (-p argument) returned by the pgrep command.

If the returned process list however contains more than 1 process, the strace will yield an error.

More information on how to fix this kind of issues can be found in our tutorial page regarding the advanced BASH loops.