【发布时间】:2014-04-25 22:07:23
【问题描述】:
我需要了解使用init.d 脚本和service start 启动命令之间的区别。
例如有什么区别
/etc/init.d/nginx start 和 service nginx start。
【问题讨论】:
我需要了解使用init.d 脚本和service start 启动命令之间的区别。
例如有什么区别
/etc/init.d/nginx start 和 service nginx start。
【问题讨论】:
除了service 在受控环境中运行脚本之外,它们执行相同的操作。来自service(8) man page:
说明
服务在可预测的环境中运行 System V 初始化脚本 尽可能删除大多数环境变量并使用当前 工作目录设置为
/。环境
LANG,TERM
传递给初始化脚本的唯一环境变量。
【讨论】:
此外:
事实不赞成直接调用 /etc/init.d/* 脚本,因为:
在最新的 Debian/Ubuntu 发行版(和派生的)上,sysvinit(它是默认的 init 系统)已被 upstart 或 systemd 取代。因此,如果使用 usptart 作业或 systemd 单元配置文件管理其中一项服务,则调用 /etc/init.d/* 将是一个 NOOP,因为脚本将退出而不提供更多信息。
相反,用户必须使用service 命令来启动/停止/重新启动服务。 service 命令是一个包装器,它将在尽可能可预测的环境中调用正确的脚本,无论使用何种初始化系统(sysinit、upstart 或 systemd)。
【讨论】: