“killall -SIGUSR1 tint2”中的 SIGUSR1 是什么意思

“killall -SIGUSR1 tint2”中的 SIGUSR1 是什么意思

我想使用色调2作为我的 Openbox 会话中的面板。

tint2 配置文件是 ~/.config/tint2/tint2rc。tint2配置说明拥有这个:

当您更改配置文件时,命令行“killall -SIGUSR1 tint2”将强制 tint2 重新加载它。

什么是

killall -SIGUSR1

做?

换句话说,跑步如何killall -SIGUSR1 tint2导致tint2rc重新加载


编辑:看来~/.conkyrc 可以用同样的方式重新加载。来自man conky

强制 Conky 重新加载 ~/.conkyrc 的简单方法是:“killall -SIGUSR1 conky”。这样就省去了终止进程然后重新启动的麻烦。现在您也可以使用 SIGHUP 执行相同操作。

答案1

kill命令确实向进程发送了一个信号...它的名字有点错误。

命令

killall -SIGxxx name

xxx将向名为“name”的进程发送“信号” 。Unix 中的进程可以接收和处理一组信号来响应外部事件。默认情况下kill,发送信号 SIGTERM,其效果(预定义)是优雅地终止进程。(SIGKILL 信号将“残酷地”终止进程,这就是有时需要使用该killall -SIGKILL ...命令的原因)。

一些过程具有硬编码含义(例如:HUP断开连接等)并且有时由内核发送。USR1并且USR2是用户可定义的信号。

你甚至可以轻松地在脚本中做到这一点:如果你在脚本中输入以下行

trap "echo TRAPPED" USR1

当您使用 kill 命令向脚本发送信号 USR1 时,脚本将打印“TRAPPED”。

所以最后一个问题的答案是:

显然,“tint2”程序有代码,在接收到信号 USR1 时,将重新加载其配置文件。

例如http://unixhelp.ed.ac.uk/CGI/man-cgi?signal+7

相关内容