​ 从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 daemon,原来管理系统启动和管理系统服务的相关命令全部由 systemctl命 令来代替。

service命令

service命令是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

语法: service < option > | --status-all | [ service_name [ command | --full-restart ] ]

option 的值

  • -h:显示 service 的帮助信息
  • -status:显示所服务的状态
  • --status-all:查看所有服务的状态
  • service_name:服务名,即 /etc/init.d 目录下的脚本文件名
  • command:系统服务脚本支持的控制命令,如:start、stop 和 restart
  • --full-restart:重启所有服务

实例:查看 service 的帮助信息

sanhe@sanhe-PowerEdge-R730:~$ service -h
Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]
sanhe@sanhe-PowerEdge-R730:~$

实例2:查看所有的服务状态

sanhe@sanhe-PowerEdge-R730:~$ service --status-all
 [ + ]  acpid
 [ + ]  alsa-utils
 [ - ]  anacron
 [ + ]  apport
 [ + ]  avahi-daemon
 [ - ]  bluetooth
 [ - ]  console-setup.sh
 [ + ]  cron
 [ + ]  cups
 [ + ]  cups-browsed
 [ + ]  dbus
 [ + ]  docker
 [ + ]  gdm3
 [ - ]  grub-common
 [ - ]  hwclock.sh
 [ + ]  irqbalance
 [ + ]  kerneloops
 [ - ]  keyboard-setup.sh
 [ + ]  kmod
 [ + ]  network-manager
 [ + ]  openvpn
 [ - ]  plymouth
 [ - ]  plymouth-log
 [ - ]  pppd-dns
 [ + ]  procps
 [ - ]  pulseaudio-enable-autospawn
 [ + ]  redis-server
 [ - ]  rsync
 [ + ]  rsyslog
 [ - ]  speech-dispatcher
 [ - ]  spice-vdagent
 [ + ]  ssh
 [ + ]  udev
 [ + ]  ufw
 [ + ]  unattended-upgrades
 [ - ]  uuidd
 [ + ]  whoopsie
 [ - ]  x11-common
sanhe@sanhe-PowerEdge-R730:~$

systemctl命令

历史上,Linux 的启动一直采用init进程。下面的命令用来启动服务。

$ sudo /etc/init.d/apache2 start

# 或者

$ service apache2 start

这种方法有两个缺点:

  • 一是启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
  • 二是启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长

​ Systemd 就是为了解决上面问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。根据 Linux 惯例,字母 d 是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。使用了 Systemd,就不需要再用 init 了。Systemd 取代了 initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。

sanhe@sanhe-PowerEdge-R730:~$ systemctl --version
systemd 245 (245.4-4ubuntu3.20)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid
sanhe@sanhe-PowerEdge-R730:~$

​ Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反 “keep simple, keep stupid” 的Unix 哲学。

service 与 systemctl 命令对比

daemon命令systemctl命令说明
service [服务] startsystemctl start [unit type]启动服务
service [服务] stopsystemctl stop [unit type]停止服务
service [服务] restartsystemctl restart [unit type]重启服务
最后修改:2023 年 03 月 30 日
感恩的心,感谢有你!