如何在 Debian8 上获取 su screen PID?

如何在 Debian8 上获取 su screen 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?

答案1

我找到了一个解决方案:

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。

相关内容