Recientemente tuve que hacer esto. En Stack Overflow, respondí cómo encontrar el PID del proceso que se ejecuta en la pantalla . Una vez que tenga el PID, puede usarlo ps
para obtener el comando. Aquí está el contenido de esa respuesta con algún contenido adicional para abordar su situación:
Puede obtener el PID de las sesiones de pantalla aquí, así:
$ screen -ls
There are screens on:
1934.foo_Server (01/25/15 15:26:01) (Detached)
1876.foo_Webserver (01/25/15 15:25:37) (Detached)
1814.foo_Monitor (01/25/15 15:25:13) (Detached)
3 Sockets in /var/run/screen/S-ubuntu.
Supongamos que desea el PID del programa que se ejecuta en Bash en la foo_Monitor
sesión de pantalla. Use el PID de la foo_Monitor
sesión de pantalla para obtener el PID de la bash
sesión ejecutándose en él buscando en los PPID (PID principal) el PID conocido:
$ ps -el | grep 1814 | grep bash
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 1815 1814 0 80 0 - 5520 wait pts/1 00:00:00 bash
Ahora obtenga solo el PID de la bash
sesión:
$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
Ahora queremos el proceso con ese PID. Simplemente anide los comandos, y esta vez use la -v
bandera grep bash
para obtener el proceso que no es bash:
$ echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
Podemos usar ese PID para encontrar el comando (Mire al final de la segunda línea):
$ ps u -p 23869
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dotanco+ 18345 12.1 20.1 5258484 3307860 ? Sl Feb02 1147:09 /usr/lib/foo
Ponlo todo junto:
$ ps u -p $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
¿Qué pasa con el uso
screen -S <your-fancy-name>
para dar a las sesiones de pantalla nombres significativos de acuerdo con los comandos que ejecutan? Los nombres se enumeraránscreen -ls
y se utilizarán para reanudar una sesiónscreen -r <your-fancy-name>
.Editar para agregar:
Desde que me ha llamado la atención el otro día.
tmux
ofrece el mismo conjunto de funcionalidades quescreen
(si no más) y viene con una función que se adapta a sus necesidades. De las preguntas frecuentes: "tmux admite cambiar automáticamente el nombre de Windows a la aplicación en ejecución sin hacks gruesos utilizando secuencias de escape. Incluso está activado de forma predeterminada".fuente