直到最近,还有一种简单有效的方法来启动/停止/重新启动服务:
service nginx start|stop|restart
这多年来一直运行良好,...直到发行版切换到 systemd,现在我面对的是 Debian/Ubuntu 系统,其中脚本service
不执行任何操作(因为我应该使用类似的东西systemctl start nginx.service
(更长时间,没有自动-完成工作,...)
我的问题特别涉及 Debian 和 Ubuntu,但涵盖 CentOS/RedHat 发行版也会有帮助。
如果不清楚,我正在寻找一种一致的方法来处理这些问题,一种适用于 Debian 7.x、8.x、最新的 Ubuntu LTS 和非 LTS 的方法。
附言。超出了这个特定问题的范围,但如果解决方案还涵盖服务的启用和禁用部分,则会获得额外的荣誉。
答案1
在其错综复杂的历史中,Unix 平台上出现了许多不同的引导和服务控制系统。
service\chkconfig
您找到的基础系统简单有效一般被称为系统初始化风格,并且是迈向某种标准化的重要一步。您会在 RHEL/CentOS(EL) 到 6 版本、Fedora 到 14 以及 2015 年之前的基于 Debian/Ubuntu 的发行版上找到这种启动方式。不过,(更简单的)BSD 样式并不是唯一的启动系统init系统仍然有很多粉丝。
SysVinit 不是一个完美的解决方案(什么是?)系统旨在克服许多问题;这是systemctl
您现在正在体验的基于命令的系统。尽管它并没有受到普遍的欢迎(人们讨厌改变、膨胀等),但毫无疑问它正在迅速成为大多数发行版的事实上的标准。
因此,立即期待您原来问题的答案很简单:
这标准控制跨服务的方式最多Linux 发行版现已推出systemctl
!
每个人都在猜测这种情况会持续多久。可能直到出现一些事情更好的并被广泛采用。
我确信会有包装器允许您当前最喜欢的service/chkconfig
命令继续执行大部分理智的事情,但由于这种特殊的学习曲线,最好不要与之抗争。也许展望未来,一段时间内还会有systemctl
旧系统的包装器,以使管理它们与更当前的系统一起不那么痛苦;)
答案2
service
用调用 [sic] 的包装器替换旧命令是否有意义servicectl
?是的,但是 [...] 包装器可以处理它,使用户能够更顺利地过渡到 systemd。
……正如其他人在评论中所说,很久以来所做的事情。
Debian 8 上的命令/usr/sbin/service
是 sysvinit-utils 软件包的一部分。它自 2009 年以来一直存在。它是对原始 sysvinit 源代码包的 Debian 特定的、源自 RedHat 的补充,从阅读脚本可以看出,它识别 systemd 运行和新贵作业的存在,将命令外包给systemctl
和initctl
(通过其别名)分别。自 2013 年以来,它一直在这样做。
service name action
即使在非 Linux 操作系统上也非常广泛可用。它甚至可以在大多数 BSD 上运行,因为它们也有自己的service
命令。service
nosh 包中还有一个 shim命令,可转换为.但 …system-control action name
- …超出了这个公共子集,周围的兼容性就会少得多。
- … OpenBSD 没有
service
命令。 - … BSD
service
命令存在着长期存在的众所周知的问题,系统管理员几十年来一直在讲述这些问题。
启用和禁用服务的情况类似。尽管 SuSEchkconfig
程序(可用于 Debian 和 Ubuntu 的打包)与 Fedora 程序有很大不同(它们是用完全不同的编程语言编写的,甚至一种是编译的,一种是解释的),但有一个共同的最小语法,chkconfig name action
行动是on
或off
.但 …
- …再次强调,除了这个公共子集之外,兼容性较差。
chkconfig
… BSD 上没有,因为用于此目的的传统工具是sysrc
更新的 OpenBSDrcctl enable
和rcctl disable
. nosh 包中有chkconfig
和垫片,可转换为和。rcctl
system-control enable name
system-control disable name
- …只有 Fedora知道 systemd 并充当和 的
chkconfig
垫片。 SuSE不了解 systemd。systemctl enable
systemctl disable
chkconfig
进一步阅读
- “下载 sysvinit-utils:文件列表”。 sysvinit-utils 包。 Debian 8 软件包。
script/service
。初始化系统助手。 Debian 源代码存档。- 乔纳森·德博因·波拉德 (2015)。
telinit
。 小吃指南。 1.20. JdeBP 的软件。 - 乔纳森·德博因·波拉德 (2015)。
service
命令不再有问题。小吃页面。 JdeBP 的软件。 - chkconfig 包。 Debian 8 软件包。
- “chkconfig 命令可以与 systemd 一起使用吗?”。系统。 Fedora 项目维基。
- “服务命令可以与 systemd 一起使用吗?”。系统。 Fedora 项目维基。
- 道格拉斯·巴顿 (2012-12-11)。
service
。 §8。 FreeBSD 手册页。 - 安托万·雅库托 (2014-08-19)。 引入 rcctl(8),一个用于维护 rc.conf.local(8) 的简单实用程序。。 OpenBSD CVS。
- 乔纳森·德博因·波拉德 (2015)。 小吃包。 JdeBP 的软件。
答案3
答案4
您的问题是 Debian/Ubuntu 已切换到新版systemd
本来替代旧版本sysvinit
。问哪个更好,你们会开始一场激烈的战争,但你总是可以切换回旧的sysvinit
,检查一下这如果你想回去。