一段时间以来,我一直在管理和关闭 Ubuntu 风格的服务器安装 - 我已经非常适应/etc/init.d/
重新启动服务。现在我收到这条消息:
root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048
这似乎是在最新的 Ubuntu LTS 中带来的——为什么?有什么不好的?和/etc/init.d/
之间有什么/有什么区别?service
/etc/init.d/
/etc/init.d
脚本是旧的做事方式。它们来自 System V 标准。但是,这些脚本仅按特定顺序触发,因此无法建立真正的依赖关系。因此,开发了 upstart 的目的是
/etc/init.d
用 upstart 脚本(在 中/etc/init
)替换所有脚本。service
允许从/etc/init.d
脚本平滑过渡到新贵脚本。将来,当越来越多的脚本转移到 upstart 时,service 仍然可以工作,因为它找到了两种可能性。还要检查服务命令的手册页:
man service
service
在可预测的环境中运行脚本(工作目录是 / 并且只设置了 2 个环境变量:LANG 和 TERM)。它还增加了做事的能力--full-restart
。所以总结一下:service
可以从 /etc/init 或 /etc/init.d(upstart 或 System V)运行脚本service
在可预测的环境中运行脚本。如果您的脚本由于某种原因依赖于环境变量,“可预测环境”方面可能会给您带来问题。可能有一种方法可以解决这个问题,但我不知道它是什么,这超出了这个问题的范围:)