10-3 信号

作者: 見贤思齊_ | 来源:发表于2020-08-05 11:01 被阅读0次

三、信号

kill 命令通常用来“ 杀死 ”(终止)进程,它可以用来终止运行不正常的程序 或 拒绝终止的程序。如下例:

kill命令示例.png

我们首先在后台启动了 xlogo 程序。Shell 将打印输出该后台进程的 jobspec 选项 信息和 PID 信息。

接着,我们使用了 kill 命令,并且指定想要终止进程的 PID 。我们也可以使用 jobspec 选项(例如:%1)代替 PID 信息来指定该进程。

0.信号是什么?

这些看起来都非常简单,但是事实上它们包含着更多的内容。kill 命令准确地说并不是杀死进程,而是给进程发送信号

信号是操作系统和程序间通信的多种方式之一,在使用 Ctrl-C 键Ctrl-Z 键 时已经见识过信号的作用。

当终端接收到其中的一个输入时,它将发送信号到前台进程。

在按下Ctrl-C 键 的情况下,它将发送一个称为 INT中断,Interrupt)的信号;

在按下Ctrl-Z 键 的情况下,它将发送一个称为 TSTP终端暂停,Terminal Stop)的信号。

反过来,程序侦听 信号,而且在接收到信号的时候按照它们的指示进行操作。程序可以监听信号并且可以按照信号指示操作的这一特性,使得程序在接收到终止信号的时候可以保存当前正在进行的工作

1.使用 kill 命令发送信号到进程

(1)语法格式

kill [-signal] PID...

'''
 功能: 终止进程。 

 参数: 
 ① PID: 要终止的进程ID号,可以写多个,就可终止多个进程。 

 选项:
 ① -signal: 指定发送的信号。signal就是信号(可以写信号编号也可写信号名;
            若没有指定信号,那么默认发送TERM终止信号。常见信号见下表)。
 ② -p:模拟发送信号。
 ③ -l:指定信号的名称列表。

 返回值:
'''
① 常用信号及示例
信号编号 信号名 含义
1 HUP 挂起信号。
2 INT 中断信号。执行效果和在终端按下 Ctrl-C 键的效果一样。通常用来终止一个程序。
9 KILL 杀死信号。
15 TERM 终止信号。这是 kill 命令默认发送的信号类型。如果程序仍然有足够的“活力”来接受信号,那么它将被终止。
18 CONT 继续运行信号。恢复之前接受了 STOP 信号的进程。
19 STOP 暂停信号。该信号将使进程暂停,而不是终止。和 KILL 信号 类似,该信号不会被发送给目标进程,因此它不能被忽略。
Ⅰ.通过信号编号使用信号 HUP
xlogo &
# 运行 xlogo 程序,使其在后台运行。
​
kill -1 13456
# 使用kill命令给它发送 HUP 信号,也可写成kill -HUP 13456。
kill命令通过信号编号使用HUP.png

在此例中,首先在后台启动了 xlogo 程序;

接着,使用 kill 命令给此进程发送 HUP 信号。

xlogo 程序将终止,shell的输出信息表明这个后台进程已经接收了一个挂起信号。

你也许需要多敲几次 Enter 键才能看到这条输出信息。

Ⅱ.通过信号名使用信号(包含SIG前缀)

可通过信号编号 或 信号名 来指定信号,其中包含带有 SIG 前缀的信号名。

xlogo &
# 通过使用 & 是xlogo程序在后台运行。
​
kill -INT 13601
​
========================
xlogo &
​
kill -SIGINT 13608
kill命令通过信号名使用信号(包含SIG前缀).png
② 其它常用信号
信号编号 信号名 含义
3 QUIT 退出信号。
11 SEGV 段错误信号。
20 TSTP 终端暂停信号。
28 WINCH 窗口改变信号。
③ 查看更多信号

如果想要查看更多的信号,使用以下命令将显示完整的信号列表。

kill -l
kill命令-l.png
⑥ 注意

和文件一样,进程也有所有者,只有进程的所有者(或超级用户)才能使用 kill 命令来给它发送信号

2.使用 killall 命令发送信号给多个进程

通过使用 killall 命令,可以给 指定程序 或 指定用户名 的多个进程发送信号

(1)语法格式

killall [-u user] [-signal] name...

'''
 功能: 给 指定程序 或 指定用户名 的多个进程发送信号。

 参数: 
 ① name

 选项:

 返回值:
'''
① 示例

可先启动两个 xlogo 程序,然后终止它们。

xlogo &
​
xlogo &
​
killall xlogo
killall命令终止2个xlogo.png
② 注意

记住,和 kill 命令一样,必须具有超级用户权限,才能够使用 killall 命令给不属于自己的进程发送信号

四、更多与进程相关的命令

因为进程监控是一项重要的系统管理任务,所以存在很多命令为它服务。

命令 描述
pstree 以树状模式输出进程列表,该模式下显示了进程间的 父/子关系。
vmstat 输出系统资源使用情况的快照,包括内存、交换空间和磁盘I/O。如果想要持续查看输出,可以在命令后面加上一个间隔时间(以秒为单位),命令将按间隔时间来动态更新显示内容(例:vmstat 9)。按下 Ctrl-C 终止输出。
xload 用来绘制 显示系统时间负载情况 图形的一种图形化界面程序。
tload 类似于 xload 程序,但是图形是在终端上绘制。按下 Ctrl-C 终止输出。

相关文章

  • 10-3 信号

    三、信号 kill 命令通常用来“ 杀死 ”(终止)进程,它可以用来终止运行不正常的程序 或 拒绝终止的程序。如下...

  • python入门与进阶(10-3)

    10-3 字符集

  • 学阿Q

    10-3 骂人真刺激 尤其是在对方 听不见的时候

  • 10-3

    last:At an episode a day, the stock would last until 2036...

  • 10-3

    71.6kg 昨晚11:46睡的,我再也不要在别人身上浪费时间了,昨天跟一个同事聊天,他是个柔软的人,有自己的固执...

  • (10-3)?

    今天设置目标49分钟 实际到达24分钟 今天的状态 感觉不是很清晰 大脑 虽说不知不觉就过去了!但总体没有“元认知...

  • 10-3

    分手后成为更好的自己 “我们的生活诠释了我们对爱的定义。如果我们认为爱就是赚钱,那我们就会把时间花在赚钱上。我们用...

  • 10-3

    (插文字。性格优势:富有天分) 我们看到特别是在艺术界里面,几乎是所有的艺术界,特别明显的就是在美术界里面,几乎所...

  • 10-3

    放假了,关心一下身体,关心一下家人,再关心一下世界。给自己腾出空间,去做应该做而一直都没做的事,这就是假期的意义。...

  • 10-3 晴

    国庆节我们没出去玩,晚上晚饭后我带他哥倆下小区玩耍。我们拿了三样东西下去,一个四轮滑板车,一个篮球,和跳绳。哥倆玩...

网友评论

    本文标题:10-3 信号

    本文链接:https://www.haomeiwen.com/subject/cwjwrktx.html