Linux
如何在 Debian8 上獲取 su 螢幕 PID?
我想由另一個使用者執行這個命令(所以使用 su):
screen -ALmdS server_mta ./mta-server -n
沒關係:
su - server_2 -c 'screen -ALmdS server_mta ./mta-server -n
但是我需要螢幕的PID,但是當我嘗試獲取時,我得到了另一個PID。
我試過這個方法:
su - server_2 -c "screen -ALmdS server_mta ./mta-server -n >>~/outlog 2>&1 & echo \$! "
但它給出了 5996 PID,但是當我檢查它
ps ax |grep server_mta
的結果是:5997 ? Ss 0:00 SCREEN -ALmdS server_mta ./mta-server -n 6023 pts/45 S+ 0:00 grep server_mta
我試過這個命令:
su - server_2 -c 'screen -ALmdS server_mta ./mta-server -n > /dev/null & ps ax |grep $! '
結果是:
6829 ? R 0:00 screen -ALmdS server_mta ./mta-server -n 6831 ? S 0:00 grep 6829
我以為我得到了 PID,當我再次檢查時
ps ax |grep server_mta
,我得到了另一個 PID。這裡的區別是螢幕是小寫的,當我簽ps ax |grep server_mta
入時,這是大寫的。如何獲得由另一個使用者使用 su 執行的螢幕程序的 PID?
我找到了一個解決方案:
su - server_2 -c "screen -ALmdS server_mta ./mta-server -n >>/home/out 2>&1"; pgrep -u server_2 | xargs ps -p | grep SCREEN | cut -f1 -d' ' | head -n 1
這將返回螢幕的 PID。