
У меня есть bash-скрипт на Fedora Linux, который я запускаю от имени пользователя 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.