Ubuntu:当用户root运行upstart服务时,它返回Unknown job

时间:2015-06-01 08:31:09

标签: ubuntu service sudo upstart init.d

从下面的输出中可以看到(不限于mysql,其他服务给出类似的结果),当使用sudo运行service / status时,它会给出正确的结果,但是当直接使用root运行时会给出“Unknown job”。 / p>

我搜索了很多内容,但是像'状态/服务'这样的关键词有多重含义,所以我发现没有任何与这个问题有关的问题,只有一些类似的问题在回答“未知工作”时使用“sudo服务......”

root@ubuntu-user:/etc/init# status mysql
status: Unknown job: mysql

root@ubuntu-user:/etc/init# sudo status mysql
mysql stop/waiting

root@ubuntu-user:/etc/init# service mysql status
status: Unknown job: mysql

root@ubuntu-user:/etc/init# sudo service mysql status
mysql stop/waiting

我已经使用strace进行了检查,没有找到任何内容(输出太长),我认为这是statusservice的限制,但在手册页中没有任何内容rootsudo

问题:为什么服务在没有sudo的情况下运行服务时会提供未知作业?

操作系统:Ubuntu 14.04 LTS

2 个答案:

答案 0 :(得分:0)

如果您使用upstart v1.4 +,请尝试使用setuid和setgid。有关详情,请访问:http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-userhttp://upstart.ubuntu.com/cookbook/#setuid

答案 1 :(得分:0)

这可能是因为initctl(它是upstart的一部分,有时在幕后调用)正在查看用户会话而不是仅用于系统的服务脚本的系统会话。尝试使用TearDown()sudo -s成为root用户,然后运行su -命令,因为这会导致service变量被删除...

有关详细信息,请参阅Running initctl as root broken错误。