Я выполняю следующие команды в 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
во второй команде? Почему корню нужно sudo
?
Хорошо, гугля это, находя этот ответ U&L, проверяя его историю изменений и после заключенного в кавычки источника в пересмотре № 1, это, оказывается, Новомодная ошибка; проблема состоит в том что при переключении на корневое выполнение su
$UPSTART_SESSION
переменную среды несут от предыдущей среды вместо того, чтобы быть установленной снова.
После большого стука по моей голове и поиска с помощью Google, я нашел сообщение (https://unix.stackexchange.com/questions/120050/sudo-service-vsftpd-returns-unknown-job-vsftpd) показывающий это
sudo service xxxx start
(или остановитесь, или перезапуск),работы, в то время как
'сервис xxxx запускается (на su сессии)
не работает.
Таким образом, преступник был ясно средой: Если Вы идете корень с "su" вместо "sudo su" или "su -", "сервис" не делает для работы правильно также, поскольку "su" будет нести большую часть среды обычного пользователя на корневую сессию.
После некоторых тестирований я нашел, что преступник является переменной среды 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, Joao S Veiga
Для фиксации этого просто сбросьте $UPSTART_SESSION
:
unset UPSTART_SESSION
или переключитесь для укоренения другими средствами, как su -
, sudo su
или sudo -i
.
В том контексте это ничего не означает и должно быть удалено. Не определяя некоторого другого пользователя, sudo
попытки стать корнем, и поэтому если Вы уже - корень, который является не кроме создания дополнительного процесса (для sudo
самого), который занимает некоторые ресурсы до команды, это выполняет концы.