Bạn có thể lấy PID của phiên màn hình ở đây như sau:
$ 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.
Chúng ta hãy giả sử rằng bạn muốn PID của chương trình đang chạy trong Bash trong phiên foo_Monitor
màn hình.Sử dụng PID của phiên foo_Monitor
màn hình để có được PID của phiên bash
chạy trong nó bằng cách tìm kiếm PPID (Parent PID) cho PID biết:
$ 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
Bây giờ nhận được chỉ là PID của phiên bash
:
$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
Bây giờ, chúng tôi muốn quy trình có rằng PID. Chỉ cần tổ các lệnh, và lần này sử dụng -v
cờ trên grep bash
để có được quá trình đó là không bash:
echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
Chỉ cần thay thế 1814 với thực PID hoặc màn hình của bạn phiên:
echo $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
Có gì sai với 'màn hình -ls'? – sarnold
.. và tại sao bạn không thể thực hiện nó bằng tập lệnh với 'screen-ls'? – sarnold