Se você quiser que o PID do processo seja executado na tela, respondi que em outra pergunta deste Stack Overflow . Aqui está o conteúdo dessa resposta:
Você pode obter o PID das sessões de tela aqui assim:
$ 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.
Vamos supor que você queira que o PID do programa seja executado no Bash na sessão de tela foo_Monitor
. Use o PID da sessão de tela foo_Monitor
para obter o PID da sessão bash
em execução, pesquisando os PPIDs (Parent PID) para o PID conhecido:
$ 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
Agora, pegue apenas o PID da sessão bash
:
$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
Agora queremos o processo com esse PID. Apenas aninhe os comandos e, desta vez, use o -v
flag em grep bash
para obter o processo que é not bash:
echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
Basta substituir 1814 pelo PID real ou pela sua sessão de tela:
echo $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')