web-dev-qa-db-ja.com

「killall -SIGUSR1 tint2」のSIGUSR1の意味

Openboxセッションのパネルとして tint2 を使用します。

Tint2構成ファイルは〜/ .config/tint2/tint2rcです。 tint2 設定手順 には以下があります:

構成ファイルを変更すると、コマンドライン「killall -SIGUSR1 tint2」により、tint2が強制的にリロードされます。

何をする

killall -SIGUSR1

行う?

つまり、killall -SIGUSR1 tint2を実行するとtint2rcreloadedになりますか?


編集:〜/ .conkyrcは同じ方法でリロードできるようです。 man conkyから:

Conkyに〜/ .conkyrcをリロードさせる簡単な方法: "killall -SIGUSR1 conky"。強制終了して再起動する手間を省きます。 SIGHUPでも同じことができます。

3
user25656

killコマンドは、実際にプロセスにシグナルを送信します...名前が少し間違っています。

コマンド

killall -SIGxxx name

「signal」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

1
Rmano