Habituellement, lorsque vous exécutez une application dans un environnement graphique, lorsque je veux la fermer, je clique X
dans le coin supérieur gauche de la fenêtre ou je vais File > Close
.
Je voudrais parfois fermer ces programmes à distance via ssh à partir du terminal en utilisant la ligne de commande, maintenant j'utilise la kill
commande mais je me demande si cela fait la même chose que de quitter correctement l'application de lui-même.
Du man kill
signal par défaut semble être 15) SIGTERM, ce signal va-t-il dire à l'application que j'essaie de fermer pour nettoyer, fermer les fichiers ouverts, enregistrer des trucs?
Y a-t-il un meilleur moyen si je veux le faire depuis le terminal?
command-line
Mike
la source
la source
Réponses:
La façon typique de fermer l'application avec élégance est d'utiliser
kill -TERM 1234
, où1234
est le PID de la fenêtre. Le problème, cependant, est que les applications graphiques sont conçues pour écouter un signal spécifique du serveur X lui-même, et non pour écouter leTERM
signal.Cela signifie que vous auriez besoin d'une sorte d'agent entre vous et le serveur X pour communiquer que vous souhaitez envoyer le signal approprié. Vous pouvez bien sûr écrire un programme C, mais il existe déjà un
wmctrl
programme (écrit sans surprise en C) qui fait exactement cela.L'utilisation de
wmctrl
est simple:Il n'est pas installé par défaut, alors obtenez-le avec
sudo apt-get install wmctrl
Il y a de nombreuses utilisations pour
wmctrl
bien au-delà de la fermeture de fenêtres, alors veuillez consulter plus de mes réponses et celles de Jacob Vlijm pour des exemples de scripts où il a été utilisé.la source
wmctrl -l
listera toutes les fenêtres et donnera l'identifiant numérique en hexadécimal dans la première colonne. =)Minimize to tray on close
etwmctrl -c
fermera simplement une fenêtre, pas l'application elle-même, elle restera en cours d'exécution minimisée dans la barre d'état.Je pense qu'il vaut la peine d'ajouter que cela
wmctrl -xl
produira des résultats comme celui-ci:Où le
x
demande que la classe de fenêtre soit dans la sortie. C'est souvent la façon la plus simple de fermer le même programme à chaque fois. Ensuite, nous pouvons simplement fournir la classe window lors de sa fermeture:Cet exemple fermera speedcrunch.
la source