È possibile ottenere il PID delle sessioni di schermo qui in questo modo:
$ 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.
Supponiamo che si desidera che il PID del programma in esecuzione in Bash nella sessione dello schermo foo_Monitor
.Utilizzare il PID della sessione foo_Monitor
schermo per ottenere il PID della sessione bash
in esecuzione in essa con la ricerca PPID (Parent PID) per il PID noto:
$ 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
Ora ottenere solo il PID della sessione bash
:
$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
Ora vogliamo il processo con del PID. Basta nido i comandi, e questa volta usano la bandiera -v
su grep bash
per ottenere il processo che non è bash:
echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
Basta sostituire 1814 con il vero PID o il vostro schermo sessione:
echo $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
Cosa c'è di sbagliato con '-ls' schermo? – sarnold
.. e perché non puoi farlo con uno script con 'screen -ls'? – sarnold