首页 理论教育 LinuxShell编程:使用kill命令发送信号

LinuxShell编程:使用kill命令发送信号

时间:2023-11-18 理论教育 版权反馈
【摘要】:从字面上看,内置命令kill用来“杀掉”某种东西,它确实有这方面的功能。但kill主要用于给作业或者进程发送信号。信号KILL,即编号为9的信号可用来强行终止进程或者作业。这样理解只是为了便于记忆,在9.6节末会讲解用信号9可以强行终止进程的原因。

LinuxShell编程:使用kill命令发送信号

从字面上看,内置命令kill用来“杀掉”某种东西,它确实有这方面的功能。但kill主要用于给作业或者进程发送信号。kill加选项-l,可以列出信号名称与编号:

978-7-111-48202-4-Chapter09-20.jpg

978-7-111-48202-4-Chapter09-21.jpg

选项-l的后面跟信号的编号时,kill命令输出相应的信号名:

978-7-111-48202-4-Chapter09-22.jpg

选项-l的后面跟信号名时,kill命令输出相应的信号编号:

978-7-111-48202-4-Chapter09-23.jpg

选项-l的后面跟不正确的信号名或者信号编号时,系统会提示出错:

978-7-111-48202-4-Chapter09-24.jpg

用命令kill给作业或者进程传递信号的格式为:

978-7-111-48202-4-Chapter09-25.jpg

如果kill命令当中没有指定信号时,默认发送的是信号SIGTERM。

根目录下开始查找名字以.gz结尾的文件,马上按〈Ctrl+Z〉键挂起它:

978-7-111-48202-4-Chapter09-26.jpg

运行jobs,可见当前有一个作业,状态为Stopped:(www.xing528.com)

978-7-111-48202-4-Chapter09-27.jpg

如果想终止该作业,运行kill%1:

978-7-111-48202-4-Chapter09-28.jpg

再运行jobs,可见作业的状态变为Terminated(因为收到了默认信号TERM,见表9-2):

978-7-111-48202-4-Chapter09-29.jpg

由于各种原因,用带默认信号TERM的kill命令有时会终止不了某个进程。信号KILL,即编号为9的信号可用来强行终止进程或者作业。例如,运行vi命令,直接将其放到后台:

978-7-111-48202-4-Chapter09-30.jpg

用信号KILL强行终止它,运行命令:

978-7-111-48202-4-Chapter09-31.jpg

把进程ID2945换为作业号%1,效果是一样的。上面的命令还可以改为kill-s KILL%1,kill-KILL%1,kill-n9%1,或者kill-9%1,效果都是一样的,实际工作中kill-9比较常用。这样理解容易记住它:9在单个数字里面是“老大”,它可以“搞定”一切。这样理解只是为了便于记忆,在9.6节末会讲解用信号9可以强行终止进程的原因。

常用的信号见表9-2。

表9-2 常用信号

978-7-111-48202-4-Chapter09-32.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈