Tengo varias pantallas ejecutándose en un servidor Ubuntu que se inician como:
screen -dmS screen1 cmd
screen -dmS screen2 cmd
etc...
Y necesito matar una pantalla, pero no todas. ¿Cuál es el comando correcto para matar una sola pantalla en particular con su nombre? He leído las páginas del manual, pero parece que no puedo encontrar el comando que estoy buscando.
También quiero escribir este comando en un script bash para no poder simplemente screen -r screen1
presionar Ctrl+ Xcomo lo haría normalmente.
bash
gnu-screen
kill
BassKozz
fuente
fuente
Respuestas:
Desde la página del manual:
Tu puedes hacer :
fuente
Si lo hace
screen -list
, notará que cada nombre de pantalla comienza con un número, que es el PID de la pantalla:A partir de ahí, solo envíe una señal KILL a este PID específico:
y matará la pantalla específica.
fuente
La solución de defraagh no funciona para mí, sin embargo, puedo matar la sesión de pantalla usando la idea de Raphink:
screen -list obtiene el ID del proceso
kill -9 PROCESSID
SESSIONID de barrido de pantalla
fuente
Si tiene varias pantallas con el mismo nombre, puede matarlas a la vez:
El comando
screen -ls
imprime pantallas con su número de proceso. Por ejemplo, 4773.test es una pantalla con el número de proceso 4773 y la prueba de nombre . Salida de muestra:El comando
egrep
filtra por encima del texto de muestra enviado a través de una línea canalizada | .awk -F "." '{print $1}'
extrae la primera columna de cada línea. El delimitador entre columnas se define como punto (.) Mediante la opción -Fxargs kill
matará todos los procesos cuyos números se envíen por tubería |.xargs
se usa cuando queremos ejecutar un comando en cada una de las entradas.fuente
Abre una nueva ventana con
Cierras una ventana con
o salir del comando dentro de la ventana
fuente
He estado tratando con esto de la siguiente manera:
La explicación es que toma la salida
screen -ls
y encuentra la pantalla particular que le interesa mediante grep y luego asigna esa cadena a la variableprocess
.Dado que la salida de
screen -ls
siempre es el PID seguido de un período, puede usar cortar para deshacerse del período y todo lo que sigue. en el ejemplo anterior, lo ponemos entre paréntesis y lo alimentamos al comando kill, aunque podría hacerlo de forma lineal, lo que podría incluir escribir en un archivo temporal y leerlo.Debe asegurarse de que su nombre de pantalla sea único y que grep SOLO le devuelva el nombre de la pantalla que desea eliminar.
fuente