从下面的输出中可以看到(不限于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
进行了检查,没有找到任何内容(输出太长),我认为这是status
和service
的限制,但在手册页中没有任何内容root
或sudo
。
问题:为什么服务在没有sudo
的情况下运行服务时会提供未知作业?
操作系统:Ubuntu 14.04 LTS
答案 0 :(得分:0)
如果您使用upstart v1.4 +,请尝试使用setuid和setgid。有关详情,请访问:http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user和http://upstart.ubuntu.com/cookbook/#setuid
答案 1 :(得分:0)
这可能是因为initctl(它是upstart的一部分,有时在幕后调用)正在查看用户会话而不是仅用于系统的服务脚本的系统会话。尝试使用TearDown()
或sudo -s
成为root用户,然后运行su -
命令,因为这会导致service
变量被删除...
有关详细信息,请参阅Running initctl as root broken错误。