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