以另一個使用者身分啟動另一個腳本的腳本,如何刪除 su 進程?

以另一個使用者身分啟動另一個腳本的腳本,如何刪除 su 進程?

我在 Fedora Linux 上有一個 bash 腳本,我以 root 使用者身分執行它,它以特權較低的使用者身分啟動另一個腳本rpmbuild

#!/bin/sh
# start as another user, fork
su rpmbuild -c ./long.sh &
# disown  the job
disown
# run some other long running things. 

內容long.sh

#!/bin/sh

sleep 300

現在如果你執行以下操作會發生什麼ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        67  0.0  0.0  81884  4080 ?        S    12:42   0:00 su rpmbuild -c ./long.sh
rpmbuild    68  0.0  0.0   9512  2340 ?        Ss   12:42   0:00 /bin/sh ./long.sh
rpmbuild    69  0.0  0.0   4316   628 ?        S    12:42   0:00 sleep 300

如何刪除進程 67,su rpmbuild以便僅rpmbuild保留該進程?

或是我需要其他工具嗎?

su如果這些(進程列表中的很多)消失,那就太好了。

答案1

您可以執行 sudo (或 su - ) pkill 67 和/或使用 sudo su - $(username) 來運行它,這應該會自動拒絕並降級腳本的權限,但是當該腳本或任何子腳本處於運行狀態時運行它會顯示缺少--nohup iirc。

相關內容