SIGUSR1 在“killall -SIGUSR1 Tint2”中意味着什么

6 openbox tint2

我想在 Openbox 会话中使用Tint2作为我的面板。

Tint2配置文件是~/.config/tint2/tint2rc。Tint2配置说明如下:

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

什么是

killall -SIGUSR1
Run Code Online (Sandbox Code Playgroud)

做?

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


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

强制 Conky 重新加载 ~/.conkyrc 的一个简单方法是:“killall -SIGUSR1 conky”。省去了必须杀掉然后重新启动的麻烦。您现在也可以使用 SIGHUP 执行相同的操作。

Rma*_*ano 4

kill命令实际上向进程发送信号......它的命名有点错误。

命令

killall -SIGxxx name
Run Code Online (Sandbox Code Playgroud)

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

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

您甚至可以在脚本中轻松做到这一点:如果您将行放入脚本中

trap "echo TRAPPED" USR1
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

  • _“显然,“tint2”程序的代码在收到 USR2 信号后将重新加载其配置文件。”_ 似乎正在发生什么,尽管“USR2”应该是“USR1”。 (2认同)