it-swarm.cn

“Service”和“/etc/init.d/”之间有什么区别?

我一直在Ubuntu风格上下管理服务器安装一段时间 - 我已经完全调整为/etc/init.d/以重新启动服务。现在我收到这条消息:

[email protected]:~# /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/之间有什么区别?

113
Marco Ceppi

/etc/init.d脚本是旧的做事方式。它们来自System V标准。但是,这些脚本仅以特定顺序触发,因此不能建立真正的依赖关系。

因此,已经开发了upstart,旨在用upstart脚本替换所有/etc/init.d脚本(在/etc/init中)。

service允许从/etc/init.d脚本平滑过渡到upstart脚本。将来,当越来越多的脚本被转移到新贵时,服务仍然有效,因为它找到了两种可能性。

103
txwikinger

另请检查服务命令的手册页:man service

service在可预测的环境中运行脚本(工作目录是/且只设置了2个环境变量:LANG和TERM)。它还增加了--full-restart的功能。总结一下:

  1. service可以从/ etc/init或/etc/init.d(upstart或System V)运行脚本
  2. service在可预测的环境中运行脚本。

如果脚本由于某种原因依赖于环境变量,则“可预测的环境”方面可能会导致问题。可能有办法解决这个问题,但我不知道它是什么,这超出了这个问题的范围:)

28
Joe Marty