
Fedora Linux には、root ユーザーとして実行する bash スクリプトがあり、権限の低いユーザーとして別のスクリプトを起動します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 が不足していることがわかります。