Control system processes via SSH Print

  • 4

The hearth 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.

To list all processes which are started by your user, you can use:

ps x 

where ps is naturally the command itself and x is the argument we are passing to it. The result will look like the following one:

PID    TTY      STAT   TIME COMMAND
 3735 pts/0    R      0:00 bash
 3775 pts/0    R+     0:00 ps x
 5032 ?        Ss     1:01 wget -mbr --no-passive-ftp….


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:

 

top

In 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.


Was this answer helpful?

« Back