您的位置:首页 > 运维架构 > Linux

写给linux系统管理员看的systemd 五 关闭的三个级别(systemd作者blog翻译过来的)

2014-03-03 21:54 453 查看
http://0pointer.de/blog/projects/three-levels-of-off

关闭的三个级别

systmed中, 关闭一个服务(或者其它unit)有3个基本. 让我们看看都是哪些:
你能stop一个服务. 那只是简单的终止服务的运行实例,其它事情做的很少. 如果由于某激活(比如手动激活,socket激活,总线激活,系统启动激活或者硬件插拔激活)需要这个服务,服务将会启动.
stop一个服务因而是非常简单的,临时的并且表明上的操作.这有一个如何stop NTP服务的例子:

$ systemctl stop ntpd.service

这大致等同于如下在大多数类SysV系统中都提供的传统命令:

$ service ntpd stop

实际上, Fedora 15上, 你执行后面的那条命令,系统会自动转换成前一条命令执行.

您能disable一个服务. 这使服务与激活触发机制拖钩. 这意味着,
服务将不再在系统启动时激活,也不能被其它诸如socket, 总线或硬件插拔这些触发机制激活. 然而, 你仍能手动启动它. 如果服务已经启动, disable它将不能使其停止.下面演示如何disable一个服务:

$ systemctl disable ntpd.service

传统的Fedora系统中, 这差不多等同于如下命令:

$ chkconfig ntpd off

Fedora 15中, 如有需要,后一命令透明的转换成前一命令.

经常你要组合stop和disable服务, 来停止当前服务并保证不再启动:

$ systemctl disable ntpd.service

$ systemctl stop ntpd.service

像上例这样的命令通常用于Fedora里卸载systemd服务的包中.

disable一个服务是永久性的改变; 除非撤销它将一直保持, 即使系统重启动也是如此.

你能mask 一个服务. 这就像disable一个服务, 但是增强型的.
它不但确保服务不再自动启动了, 而且确保服务也不能手动启动了. 这有点像systemd中的隐藏属性, 因为它通常没啥用, 并且容易使用户产生困惑. 下面是使用的例子:

$ ln -s /dev/null /etc/systemd/system/ntpd.service

$ systemctl daemon-reload

把一个服务文件链接到/dev/null 你告诉systemd不启动这一服务完全屏蔽它的执行./etc/systemd/systemd下的unit文件是优先于/libsystemd/system有同样名字的文件的. 前者是系统管理员的范畴,后者是包管理者的范畴. 把你的链接放到/etc/systemd/system/ntpd.service你就能保证systemd不会去读上位的安装服务文件/lib/systemd/system/ntpd.service.

systemd 将会认出链接到 /dev/null的单元并把它们显示成masked. 如果你手动启动这样的服务 (比如通过 systemctl start )
将会提升一些错误:.

A similar trick on SysV systems does not (officially) exist. However, there are a few unofficial hacks, such as editing the init script and placing an exit 0 at
the top, or removing its execution bit. However, these solutions have various drawbacks, for example they interfere with the package manager.

Masking a service is a permanent change, much like disabling a service.


与stop和disable相对应, 用 systemctl start 来撤销 systemctl stop. 用systemctl enable 来撤销systemctl disable 用rm 来撤销 ln.
就这些了, 多谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: