Process and job control
Typing kill -l shows you the instructions that kill passes to a process. The following are the most relevant ones for your daily work:
- SIGHUP: This tells a process to restart immediately after terminating and is often used to tell servers to parse modified configuration files.
- SIGTERM: This request to terminate allows the process to clean up.
- SIGKILL: This signal forces a process to terminate come what may. But in some cases, it takes more to get rid of the process. After waiting in vain for a timeout, you have no alternative but to reboot.
- SIGSTOP: Interrupts the process until you enter SIGCONT to continue.
To send a signal to a process, you can enter either the signal name or number followed by the process ID – for example, kill -19 9201. Also, you can specify multiple process IDs. If you call kill without any parameters but with the PID, it will send the SIGTERM signal to the process.
Seek and Ye Shall Find
To find the right process ID, you can run ps as described previously. The shell command can be combined with other tools, such as grep, in the normal way. For example, you could do this (Listing 3) to find processes with ssh in their names.
01 $ ps aux | grep ssh 02 root 2816 ... 0:00 /usr/sbin/sshd 03 chicken 3992 ... 0:00 ssh -X chicken@asteroid 04 chicken 4249 ... 0:00 ssh chicken@nugget
Besides the SSH server (sshd), the list includes all of your SSH connections. To send the same signal to all of these processes, you would normally list the PIDs in the kill command line, which can be tricky if the list is too long.
The killall gives you a workaround – the tool understands all of the kill signals but expects process names instead of IDs.
The killall -19 ssh command sends all your SSH connections to sleep (SIGSTOP). If you do not specify the signal, killall assumes you mean SIGTERM, just like kill.
Because killall really does remove the processes in one fell swoop, it is a good idea to switch to interactive mode (-i option). For each process, the tool prompts you to decide whether to terminate.
More Detective Work
If you are looking for process IDs, a combination of ps and grep is a good idea, but you can save some typing by running pgrep instead.
To find all processes with ssh in their names, do the following:
$ pgrep ssh 2816 3992 4249
If you need more context, add the -l parameter and pgrep will reveal the names. To discover the full command line, including all arguments, combine -l and -f:
$ pgrep -lf ssh 2816 /usr/sbin/sshd 3992 ssh -X chicken@asteroid 4249 ssh chicken@nugget
Buy this article as PDF
Upcoming switch to HTML5-only ads is further evidence the Flash is entering its final days.
US government invests $19 billion on enhancing security and replacing ancient computer systems.
But you can still be a non-voting “individual supporter” if you pay the money
Several current systems could fall victim to the attack
Latest Linux engine comes with better graphics and support for Intel's new power-saving chips.
Hackers send a message of beauty and liberation to server logs
Citrix gets excited about new Pi-Powered XenDesktop client system
Linux on Azure cert heralds a new era for Redmond.
Proposals for presentations at the CeBIT Open Source Forum will be accepted through 24 January 2016.
Adobe looks for a new start; renames its embattled Flash tool.