我想使用色调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 时,将重新加载其配置文件。