Monday, December 14, 2015

SIGTERM vs SIGKILL and some more

SIGTERM vs SIGKILL 

kill will send SIGTERM signal
- may stop OR not.
- may be ignored.

kill -9 will send SIGKILL signal
- carries little more weight than SIGTERM
- 9 indicates SIGKILL-  CANNOT be ignored by process
-  SIGKILL directly goes to the init process.
   - init will stop the process.

Processes into "uninterriptible sleep"(D state) cannot be killed by kernel either. Reboot is required.

SIGKILL: Terminates a process immediately. This signal cannot be handled (caught), ignored or blocked. (The "kill -9" command in linux generates the same signal).


SIGTERM: Terminates a process immediately. However, this signal can be handled, ignored or caught in code. If the signal is not caught by a process, the process is killed. Also, this is used for graceful termination of a process. (The "kill" command in linux if specified without any signal number like -9, will send SIGTERM)

SIGINT: Interrupts a process. (The default action is to terminate gracefully). This too, like, SIGTERM can be handled, ignored or caught. The difference between SIGINT and SIGTERM is that the former can be sent from a terminal as input characters. This is the signal generated when a user presses Ctrl+C. (Sidenote: Ctrl+C denotes EOT(End of Transmission) for (say) a network stream)

SIGQUIT: Terminates a process. This is different from both SIGKILL and SIGTERM in the sense that it generates a core dump of the process and also cleans up resources held up by a process. Like SIGINT, this can also be sent from the terminal as input characters. It can be handled, ignored or caught in code. This is the signal generated when a user presses Ctrl+\.

SIGSTP: Suspends a process. This too, can be handled, ignored or blocked. Since it does not terminate the process, the process can be resumed by sending a SIGCONT signal. This signal can be generated by pressing Ctrl+Z. (Sidenote: Ctrl+Z stands for substitute character which indicates End-of-File in DOS)

SIGHUP: (From Wikipedia): Hangs up a process when the controlling terminal is disconnected. This especially relates to modem/dial in connections. A process has to explicitly handle this signal for it to work. A good use is to "poke" a process and letting the process (as defined by the programmer) decide what to do with the signal is described here. Hence, SIGHUP can be handled,ignored or caught. This is the signal generated when a user presses Ctrl+D.


Link: http://programmergamer.blogspot.in/2013/05/clarification-on-sigint-sigterm-sigkill.html

No comments:

Post a Comment