
我在 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。