我想由另一个用户运行这个命令(所以使用 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?
我找到了一个解决方案:
这将返回屏幕的 PID。