Ok, pesquisando isso, encontrando esta resposta do U & L , verificando a sua Revisões do histórico e seguindo a fonte citada no revisão # 1 , este é um bug Upstart ; o problema é que, ao alternar para a raiz executando su
, a variável de ambiente $UPSTART_SESSION
é transportada do ambiente anterior, em vez de ser configurada novamente.
Depois de muito bater a cabeça e googling, encontrei uma postagem ( link ) mostrando que
sudo service xxxx start
(ou pare ou reinicie)funciona, enquanto
'service xxxx start (em uma sessão su)
não funciona.
Então, o culpado foi claramente o ambiente: se você for root com "su" em vez de "sudo su" ou "su -", "serviço" também não funcionará corretamente, já que "su" carregará a maior parte de seu ambiente de usuário normal para a sessão raiz.
Depois de alguns testes, descobri que o culpado é a variável de ambiente UPSTART_SESSION, que vem configurada quando você "su", mas não definida quando você "sudo su" ou "su -". Aqui estão alguns resultados de testes:
- não funciona
jsveiga@dell:~$ su Password: root@dell:/home/jsveiga# service smbd restart stop: Unknown job: smbd start: Unknown job: smbd
- funciona até mesmo a partir de uma sessão su
root@dell:/home/jsveiga# sudo service smbd restart smbd stop/waiting smbd start/running, process 3823
- funciona
root@dell:/home/jsveiga# exit jsveiga@dell:~$ sudo su root@dell:/home/jsveiga# service smbd restart smbd stop/waiting smbd start/running, process 3862
- funciona
root@dell:/home/jsveiga# exit jsveiga@dell:~$ su - Password: root@dell:~# service smbd restart smbd stop/waiting smbd start/running, process 3905
- indo su, em seguida, desarmar os trabalhos 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
Portanto, os scripts start / stop estão falhando de alguma forma simplesmente pela presença da variável de ambiente
UPSTART_SESSION
.BR, João S Veiga
Para corrigir isso, basta remover a configuração $UPSTART_SESSION
:
unset UPSTART_SESSION
ou mude para a raiz por outros meios, como su -
, sudo su
ou sudo -i
.