服务与 systemctl 脚本——使用哪个

Mar*_*ark 25 fedora systemd

在 Fedora 中,我们有“systemctl”和“service”脚本。似乎服务内部调用systemctl. 那么在 Fedora 上启动或停止服务的正确/正确方式是什么——通过systemctlservice设施?可能有一些细微差别要记住?

gar*_*Red 14

在 Fedora(更高版本)中停止/启动服务的方法是使用systemctl.

但是,可能还有一些服务/etc/init.d/可供您使用该service命令进行控制。您仍然可以控制它们systemctlsystemd自动将它们映射到单元文件给你。

例如,在我的 CentOS 7(Fedora 19 或类似版本)上,有一个/etc/rc.d/init.d/network我可以用service命令控制的脚本。如果我systemctl改用,它仍然有效:

# sudo systemctl status network
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since Tue 2014-11-11 08:21:51 GMT; 2 weeks 1 days ago
Run Code Online (Sandbox Code Playgroud)

如您所见,它已映射到/etc/rc.d/init.d/networkbysystemd并且systemctl命令控制它。

我可以这样“去年”并使用service

# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0 tun0
Run Code Online (Sandbox Code Playgroud)

两者都有效,但请注意,它们在status命令中确实给出了不同的结果。


slm*_*slm 10

通常情况下,service脚本会被重定向到 systemctl (Systemd) 脚本,因此这基本上是您想要使用的首选项。

例子

来自我的 Fedora 20 系统。

$ service sshd status
Redirecting to /bin/systemctl status  sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Fri 2014-11-21 09:12:10 EST; 5 days ago
 Main PID: 1095 (sshd)
   CGroup: /system.slice/sshd.service
           ??1095 /usr/sbin/sshd -D

Nov 21 09:12:10 dufresne systemd[1]: Starting OpenSSH server daemon...
Nov 21 09:12:10 dufresne systemd[1]: Started OpenSSH server daemon.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on 0.0.0.0 port 22.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on :: port 22.
Run Code Online (Sandbox Code Playgroud)

我通常使用这两种方法,因为旧习惯很难改掉。但是如果你想适应 Systemd 世界,我会继续强迫自己systemctl尽可能地使用。

此外Systemd带来的一切,你用来做chkconfigservice一个命令下systemctl,所以我一般发现更容易应付的长远目标。

Fedora 项目网站上的这份备忘单有助于进行转换。

   SS1

顺便说一句,您原始问题的答案在该页面的脚注中得到了回答:

请注意,上面列出的所有 /sbin/service 和 /sbin/chkconfig 行继续在 systemd 上工作,并将根据需要转换为本地等效项。唯一的例外是 chkconfig --list。

参考