What are Linux Signals? Let’s explore it.
A signal is just a response generated by Linux or UNIX-like systems in response to some conditions. Upon receiving the signal a process may take action. There are multiple types of signals sent in different situations.
Types of Linux signals.
There are two types of Linux Signals.
Maskable:
- Signals can be changed or ignored by the user.
- It helps to handle lower priority tasks.
- It has a high response time.
- The operation can be changed.
Non-Maskable:
- Signals which cannot be changed or ignored by the user. Normally these occur when there are non-recoverable hardware errors.
- It helps to handle higher priority tasks
- It has a low response time
- The operation cannot be changed
List of signals
SIGHUP :
- Normally generated when users log off so that processes which this user was controlling will get interrupted. The system will send the signal SIGHUP and all the user’s processes will be interrupted.
- It can be also generated when the user’s terminal is disconnected.
- SIGHUP will also generate when there is network loss.
SIGINT:
- This signal is sent when we press ctrl + c, so that process will be killed immediately. You might have noticed that sometimes even when you send ctrl + c processes are not getting killed instead something weird happens like a new line is printed that’s because each process has the ability to override this signal.
SIGQUIT & SIGTERM:
- When these signals are sent process has to kill. However, when SIGQUIT is sent it may generate a core dump file before exiting.
- Normally when you type kill <PID> a SIGTERM signal is sent.
- note: not all SIGTERM signals are honored, sometimes the process may override it.
SIGKILL:
- This is the non-maskable interrupt, when you send SIGKILL the process has to be killed no matter what.
- This signal cannot be ignored.
- when you send kill -SIGKILL <PID> the process will be terminated right away.
If you want to learn more about Linux Basics you can always come here.