天天看点

linux 信号_linux的信号处理

linux 信号_linux的信号处理

linux利用信号与运行在系统中的进程进行通信。可以通过对脚本进行编程,使其在收到特定信号时执行某些命令,从而控制shell脚本的操作。

linux系统信号有30多个,下表中列出来最常见的几个linux系统信号

信号 描述
1 SIGHUP 挂起进程
2 SIGINT 终止进程
3 SIGQUIT 停止进程
9 SIGKILL 无条件终止进程
15 SIGTERM 尽可能的终止进程
17 SIGSTOP 无条件的停止进程,但不是终止进程
18 SIGSTP 停止或暂停进程,但不终止进程
19 SIGCONT 继续运行停止的进程

生成信号

bash shell允许用键盘上的组合键生成两种基本的linux信号。这种特性在需要停止或暂停失控程序时非常方便。

1.中断进程

Ctrl+C组合键会生成SIGINT信号,并将其发送给当前在shell中运行的所有进程。

演示代码如下:

linux 信号_linux的信号处理

2.暂停进程

Ctrl+Z组合键会生成一个SIGTSTP信号,停止shell中运行的任何程序,停止进程和终止进程不同,停止进程会让程序继续保留在内存中,并能从上次停止的位置继续运行。

演示代码如下:

linux 信号_linux的信号处理

方括号中的[1]是shell分配的作业号,shell将运行的每一个进程称为作业,并为每一个作业分配唯一的作业号。它会为第一个作业分配作业号1,第二个作业分配作业号2,以此类推。

可以通过ps -l命令查看已经停止的作业,在S列中,ps命令将已经停止的作业的状态显示为T。

如果在已经有停止作业的状态下,仍旧想退出shell,可以使用kill命令来发送一个SIGKILL信号来终止它。

演示代码如下:

linux 信号_linux的信号处理

继续阅读