J'ai plusieurs écrans fonctionnant sur un serveur Ubuntu qui sont lancés comme:
screen -dmS screen1 cmd
screen -dmS screen2 cmd
etc...
Et je dois tuer un écran, mais pas tous. Quelle est la bonne commande pour tuer un seul écran particulier avec son nom? J'ai lu les pages de manuel mais je n'arrive pas à trouver la commande que je recherche.
Aussi, je veux écrire cette commande dans un script bash, donc je ne peux pas simplement screen -r screen1
appuyer sur Ctrl+ Xcomme je le ferais normalement.
bash
gnu-screen
kill
BassKozz
la source
la source
Réponses:
Depuis la page de manuel:
Tu peux faire :
la source
Si vous faites un
screen -list
, vous remarquerez que chaque nom d'écran commence par un nombre, qui est le PID de l'écran:De là, envoyez simplement un signal KILL à ce PID spécifique:
et cela tuera l'écran spécifique.
la source
La solution de defraagh ne fonctionne pas pour moi, mais je peux tuer la session d'écran en utilisant l'idée de Raphink:
screen -list obtenir l'ID du processus
kill -9 PROCESSID
écran-essuyer SESSIONID
la source
Si vous avez plusieurs écrans avec le même nom, vous pouvez les tuer à la fois:
La commande
screen -ls
imprime les écrans avec leur numéro de processus. Par exemple, 4773.test est un écran avec le numéro de processus 4773 et le test de nom . Exemple de sortie:egrep
Filtres de commande au-dessus de l'exemple de texte envoyé via la ligne piped | .awk -F "." '{print $1}'
extrait la première colonne de chaque ligne. Le délimiteur entre les colonnes est défini comme un point (.) Par l'option -Fxargs kill
va tuer tous les processus dont les numéros envoyés via pipe |.xargs
est utilisé lorsque nous voulons exécuter une commande sur chacune des entrées.la source
Vous ouvrez une nouvelle fenêtre avec
Vous fermez une fenêtre avec
ou quitter la commande dans la fenêtre
la source
Je l'ai traité comme suit:
L'explication est que vous prenez la sortie de
screen -ls
et trouvez l'écran particulier qui vous intéresse en utilisant grep puis affectez cette chaîne à la variableprocess
.Comme la sortie de
screen -ls
est toujours le PID suivi d'un point, vous pouvez ensuite utiliser cut pour vous débarrasser du point et de tout ce qui se trouve après. dans l'exemple ci-dessus, nous mettons cela entre parenthèses et nous le transmettons à la commande kill, bien que vous puissiez le faire de manière linéaire, ce qui pourrait inclure l'écriture dans un fichier temporaire et la lecture de cela.Vous devez vous assurer que votre nom d'écran est unique et que grep renvoie UNIQUEMENT le nom de l'écran que vous souhaitez tuer.
la source