Unix: Sending signals to processes

The kill command provides a lot more functionality than just terminating processes. You can use it to send any of more than 60 signals to processes and what happens next depends on the signal, the process and maybe even your settings.

By  

This might be done, for example, when you've made changes to a web site's configuration file and want those changes to take effect, but you don't want a service outage.

The following are some of the more common signals:

Signal  Number	Description
SIGHUP	1	Hang up detected on controlling terminal or death of con-
                        trolling process
SIGINT	2	Issued if the user sends an interrupt signal (Ctrl + C)
SIGQUIT	3	Issued if the user sends a quit signal (Ctrl + D)
SIGFPE	8	Issued if an illegal mathematical operation is attempted
SIGKILL	9	If a process gets this signal it must quit immediately and
                        will not perform any clean-up operations
SIGALRM	14	Alarm Clock signal (used for timers)
SIGTERM	15	Software termination signal (sent by kill by default)

You can get a complete list of the signals available to you by using the kill -l command.

$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

The signals you will see will depend on the OS you are running, though the most common signals should be listed on all Unix systems whether Linux, Solaris, AIX, etc.

What happens when a signal is sent depends on the signal and process, but every signal has a default action. Some of the most common responses are:

  • terminate the process
  • ignore the signal
  • stop the process
  • get a stopped process moving again

If you use the command kill -1 $$, for example, your login session will likely drop your connection. The kill -1 $$ command should terminate only your current shell. The kill -1 -1 command, on the other hand, will send SIGHUP to your entire process group and drop you on the floor ... rather expediently. DO NOT do this as root. On some systems (like HPUX), it will only log you (root) out; on others (like Solaris), it will reboot the system.

Photo Credit: 

Sandra H-S

Join us:
Facebook

Twitter

Pinterest

Tumblr

LinkedIn

Google+

Operating SystemsWhite Papers & Webcasts

See more White Papers | Webcasts

Answers - Powered by ITworld

ITworld Answers helps you solve problems and share expertise. Ask a question or take a crack at answering the new questions below.

Join us:
Facebook

Twitter

Pinterest

Tumblr

LinkedIn

Google+

Ask a Question
randomness