En général, cela devrait être bien de le faire de cette façon.
Lorsque vous cliquez sur le "X" pour fermer la fenêtre du terminal, cela envoie un "signal" de votre bureau (GNOME, KDE, etc.) à l'application du terminal, lui disant de s'arrêter. Puisque vous exécutez MATLAB dans ce shell, il est considéré comme un processus enfant pour l'application terminale.
Donc, une partie des responsabilités d'être un processus parent est que vous envoyez à son tour ce même «signal» proche à vos enfants.
Maintenant, si vous comprenez conceptuellement ce que je viens d'expliquer, substituons un peu plus la vraie terminologie.
signaux
Tout d'abord avec le "signal", il existe en fait toute une famille de signaux différents que vous pouvez envoyer aux processus Unix. Pour faire simple , il y a 4 que vous verrez souvent SIGHUP
, SIGTERM
, SIGINT
et SIGKILL
.
SIGHUP
Le signal SIGHUP est envoyé à un processus lorsque son terminal de commande est fermé. Il a été initialement conçu pour notifier le processus de coupure de ligne série. Dans les systèmes modernes, ce signal signifie généralement que le contrôle du pseudo-terminal ou du terminal virtuel a été fermé.
SIGTERM
Le signal SIGTERM est un signal générique utilisé pour provoquer l'arrêt du programme. Contrairement à SIGKILL, ce signal peut être bloqué, traité et ignoré. C'est la manière normale de demander poliment à un programme de se terminer.
SIGINT
Le signal SIGINT («interruption de programme») est envoyé lorsque l'utilisateur tape le caractère INTR (normalement Cc).
SIGKILL
Le signal SIGKILL est utilisé pour provoquer l'arrêt immédiat du programme. Il ne peut pas être manipulé ou ignoré et est donc toujours fatal. Il n'est pas non plus possible de bloquer ce signal.
REMARQUE: SIGINT
est ce qui est envoyé lorsque vous utilisez Ctrl+ Cpour "casser" un programme à partir de la ligne de commande alors qu'il est en cours d'exécution.
lequel s'habitue?
Il est très probable que le SIGTERM
soit appelé par votre environnement de fenêtrage et transmis à votre terminal. Votre terminal envoie alors probablement SIGHUP
à MATLAB. Ce signal donne à tous les processus la possibilité d'effectuer eux-mêmes tout nettoyage local (fermeture de fichiers, fin de processus, etc.).
commande kill
Vous pouvez envoyer des signaux vous à l' aide de la commande mal nommée, kill
. Donc, pour envoyer le SIGTERM
signal à votre terminal ou au SIGHUP to MATLAB, you could determine their PID using
ps` puis exécutez cette commande pour leur envoyer le signal:
$ kill -SIGTERM <PID>
ou ca:
$ kill -SIGHUP <PID>
Vous pouvez obtenir une liste complète des signaux en utilisant cette commande:
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...
...
Remarquez que les signaux ont des chiffres? Vous les verrez souvent utilisés comme ça au lieu de leurs noms:
$ kill -15 <PID>
Ou l'infâme -9
, qui peut tuer à peu près n'importe quel processus.
C'est très probablement correct, mais vous perdrez des données en fonction des applications ouvertes. Par exemple, si un éditeur de fichiers est ouvert, vous risquez de perdre certaines de vos modifications si vous n'enregistrez pas et ne quittez pas correctement. Si vous êtes inquiet, déconnectez-vous / quittez le terminal correctement. Si vous n'aimez pas taper
exit
oulogout
essayez simplementCtrl-D
.la source
Ctrl-D
, cela ne s'applique vraiment qu'à l'invite de commande.