web-dev-qa-db-fra.com

Que signifie SIGUSR1 dans "killall -SIGUSR1 tint2"

Je veux utiliser tint2 comme panneau dans une session Openbox.

Le fichier de configuration de tint2 est ~/.config/tint2/tint2rc. La teinte2 instructions de configuration a ceci:

Lorsque vous modifiez le fichier de configuration, la ligne de commande 'killall -SIGUSR1 tint2' forcera tint2 à le recharger.

Qu'est-ce que

killall -SIGUSR1

faire?

En d'autres termes, comment exécuter killall -SIGUSR1 tint2 provoque-t-il le rechargement de tint2rc?


Edit: il apparaît que ~/.conkyrc peut être rechargé de la même manière. De man conky:

Un moyen facile de forcer Conky à recharger votre ~/.conkyrc: "killall -SIGUSR1 conky". Vous évite d'avoir à tuer puis à redémarrer. Vous pouvez maintenant faire la même chose avec SIGHUP.

3
user25656

La commande kill envoie vraiment un signal au processus ... c'est un peu mal nommé.

La commande

killall -SIGxxx name

enverra le "signal" xxx au processus portant le nom "nom". Processus sous Unix peut recevoir et gérer un ensemble de signaux pour répondre à des événements externes. Par défaut, kill envoie le signal SIGTERM qui a pour effet (prédéfini) de tuer en douceur le processus. (Le signal SIGKILL arrêtera le processus "brutalement", c’est la raison pour laquelle vous devez parfois utiliser la commande killall -SIGKILL ...).

Certains processus ont une signification codée en dur (par exemple: HUP est une déconnexion, etc.) et sont parfois envoyés par le noyau. USR1 et USR2 sont des signaux définissables par l'utilisateur.

Vous pouvez même le faire facilement dans les scripts: si vous mettez dans un script la ligne

trap "echo TRAPPED" USR1

le script imprimera "TRAPPED" lorsque vous lui enverrez le signal USR1 avec la commande kill.

Donc, la réponse à la dernière question est:

Evidemment, le programme "tint2" a un code qui, à la réception du signal USR1, rechargera son fichier de configuration.

Voir par exemple http://unixhelp.ed.ac.uk/CGI/man-cgi?signal+7

1
Rmano