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 que el PID del programa que se ejecuta en Bash en la sesión de pantalla foo_Monitor
.Utilizar el PID de la sesión foo_Monitor
pantalla para obtener el PID de la sesión bash
correr en ella mediante la búsqueda PPID (Padre PID) para 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 obtener sólo el PID de la sesión bash
:
$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
Ahora queremos que el proceso con que PID. Sólo nido de los comandos, y esta vez utilizan la bandera -v
en grep bash
para que el proceso que es no bash:
echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
Basta con sustituir 1814 con el PID real o la pantalla de sesión:
echo $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
¿Qué pasa con '-ls' pantalla? – sarnold
.. y ¿por qué no puedes hacerlo por script con 'screen -ls'? – sarnold