以另一个用户身份启动另一个脚本的脚本,如何删除 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。

相关内容