別のユーザーとして別のスクリプトを開始するスクリプトの場合、su プロセスを削除するにはどうすればよいでしょうか?

別のユーザーとして別のスクリプトを開始するスクリプトの場合、su プロセスを削除するにはどうすればよいでしょうか?

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 が不足していることがわかります。

関連情報