Я запускаю следующие команды в Ubuntu 14.04:
root@ubuntu:~# service rpki-ca restart
stop: Unknown job: rpki-ca
start: Unknown job: rpki-ca
root@ubuntu:~# sudo service rpki-ca restart
rpki-ca stop/waiting
rpki-ca start/running
root@ubuntu:~#
Какой эффект sudo
во второй команде? Зачем root нужен sudo
?
решение1
Ок, гуглю это, нахожу этоответ U&L, проверяя егоистория измененийи следуя цитируемому источнику вредакция №1, это случаетсяОшибка Upstart; проблема в том, что при переключении в режим root переменная su
среды $UPSTART_SESSION
переносится из предыдущей среды, а не устанавливается заново.
После долгих раздумий и гугления я нашел пост (https://unix.stackexchange.com/questions/120050/sudo-service-vsftpd-returns-unknown-job-vsftpd) показывая, что
sudo service xxxx start
(или остановить, или перезапустить)работает, пока
`service xxxx start (в сеансе su)
не работает.
Таким образом, виновником явно была среда: если вы входите в систему как пользователь root с помощью «su» вместо «sudo su» или «su -», «service» также не будет работать правильно, поскольку «su» перенесет большую часть вашей обычной пользовательской среды в сеанс root.
После некоторых тестов я обнаружил, что виновником является переменная среды UPSTART_SESSION, которая устанавливается, когда вы "su", но не устанавливается, когда вы "sudo su" или "su -". Вот некоторые результаты тестов:
-- не работает
jsveiga@dell:~$ su Password: root@dell:/home/jsveiga# service smbd restart stop: Unknown job: smbd start: Unknown job: smbd
-- работает даже из сеанса su
root@dell:/home/jsveiga# sudo service smbd restart smbd stop/waiting smbd start/running, process 3823
-- работает
root@dell:/home/jsveiga# exit jsveiga@dell:~$ sudo su root@dell:/home/jsveiga# service smbd restart smbd stop/waiting smbd start/running, process 3862
-- работает
root@dell:/home/jsveiga# exit jsveiga@dell:~$ su - Password: root@dell:~# service smbd restart smbd stop/waiting smbd start/running, process 3905
-- переход на su, а затем отмена настройки UPSTART_SESSION работает
root@dell:/home/jsveiga# exit jsveiga@dell:~$ su Password: root@dell:/home/jsveiga# service smbd restart stop: Unknown job: smbd start: Unknown job: smbd root@dell:/home/jsveiga# unset UPSTART_SESSION root@dell:/home/jsveiga# service smbd restart smbd stop/waiting smbd start/running, process 4244
Таким образом, скрипты запуска/остановки каким-то образом терпят неудачу просто из-за наличия
UPSTART_SESSION
переменной окружения.BR, Жуан С. Вейга
Чтобы исправить это, просто отмените $UPSTART_SESSION
:
unset UPSTART_SESSION
или переключиться на root-доступ другими способами, например su -
, , sudo su
или sudo -i
.
решение2
В этом контексте это ничего не значит и должно быть удалено. Без указания другого пользователя sudo
пытается стать root, и поэтому, если вы уже root, это пустая операция, за исключением создания дополнительного процесса (для sudo
себя), который занимает некоторые ресурсы, пока команда, которую он выполняет, не завершится.