第一章:CentOS的系统服务管理系统

Linux系统服务管理

从CentOS7开始,CentOS的服务管理工具由SysV改为了systemd,但即使是在CentOS7里,也依然可以使用chkconfig这个原本出现在SysV里的命令。

Systemd的设计目标是,为系统的启动和管理提供一套完整的解决方案。

chkconfig服务管理工具

罗列chkconfig所管理的服务

使用chkconfig --list命令可以列出所有的服务及其在每个级别(run level)下的自启状态。

  1. netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
  2. network 0:off 1:off 2:on 3:on 4:on 5:on 6:off

这里我们只关心第3级和第5级:第3级表示完整的多用户模式,是标准的运行级,也即我们平常最常用的文字模式;第5级表示图形界面的管理模式。

需要注意的是,在CentOS7中,chkconfig只保留极少量的SysV服务,其它服务请使用systemd进行管理。

使用chkconfig更改某服务在某级别下的自启状态

例如,使用chkconfig --level 345 network off即可关闭network这个服务在第3/4/5级中的自启;另外如果不传入参数--level,则默认针对级别2/3/4/5操作。

为chkconfig添加/删除管理的服务项

简单例如:

  1. # chkconfig --del network
  2. # chkconfig --add network

systemd服务管理工具

罗列systemd所管理的服务

使用systemctl list-units --all --type=service

  1. # systemctl list-units --all --type=service
  2. UNIT LOAD ACTIVE SUB DESCRIPTION
  3. aegis.service loaded active running LSB: aegis update.
  4. agentwatch.service loaded active exited SYSV: Starts and stops guest agent
  5. aliyun-util.service loaded active exited Initial Aliyun Jobs
  6. aliyun.service loaded active running Aliyun Service Daemon

这些服务对应的启动脚本文件保存在/usr/lib/systemd/system

systemd的基本概念

systemd把系统的各项资源(包括各个服务、设备等)都看作是unit,unit有许多种类,我们目前关心的是servicetarget。这里的service并不是什么新概念,因此只解释一下target:target是多个unit的组合,启动一个target也就相当于启动其中包含的所有unit;SysV中的run level在systemd里被target所取代,例如系统以多用户文字模式(runlevel 3)启动时,就会启动multi-user.target,而以图形界面模式(runlevel 5)启动时,则会启动graphical.target;target之间并非互斥的,因此可以同时启动多个target。

我们可以用systemctl list-dependencies multi-user.target来列举multi-user.target所包含的内容:

  1. # systemctl list-dependencies multi-user.target
  2. multi-user.target
  3. ├─aegis.service
  4. ├─agentwatch.service
  5. ├─aliyun-util.service
  6. ├─aliyun.service
  7. ├─brandbot.path
  8. ├─crond.service
  9. ├─dbus.service
  10. ├─network.service
  11. ├─ntpd.service
  12. ├─plymouth-quit-wait.service
  13. ├─plymouth-quit.service
  14. ├─rc-local.service
  15. ├─rsyslog.service
  16. ├─sshd.service
  17. ├─sysstat.service
  18. ├─systemd-ask-password-wall.path
  19. ├─systemd-logind.service
  20. ├─systemd-readahead-collect.service
  21. ├─systemd-readahead-replay.service
  22. ├─systemd-update-utmp-runlevel.service
  23. ├─systemd-user-sessions.service
  24. ├─basic.target
  25. ├─microcode.service
  26. ├─rhel-autorelabel-mark.service
  27. ├─rhel-autorelabel.service
  28. ├─rhel-configure.service
  29. ├─rhel-dmesg.service
  30. ├─rhel-loadmodules.service
  31. ├─paths.target
  32. ├─slices.target
  33. ├─-.slice
  34. └─system.slice
  35. ├─sockets.target
  36. ├─dbus.socket
  37. ├─systemd-initctl.socket
  38. ├─systemd-journald.socket
  39. ├─systemd-shutdownd.socket
  40. ├─systemd-udevd-control.socket
  41. └─systemd-udevd-kernel.socket
  42. ├─sysinit.target
  43. ├─dev-hugepages.mount
  44. ├─dev-mqueue.mount
  45. ├─kmod-static-nodes.service
  46. ├─ldconfig.service
  47. ├─plymouth-read-write.service
  48. ├─plymouth-start.service

可以看出这其中就包含了不少target,比如basic.target,因此target是可以嵌套的。

systemd常用命令

  1. # systemctl enable crond.service // 让某个服务开机自启(.service可以省略)
  2. # systemctl disable crond // 不让开机自启
  3. # systemctl status crond // 查看服务状态
  4. # systemctl start crond // 启动某个服务
  5. # systemctl stop crond // 停止某个服务
  6. # systemctl restart crond //重启某个服务
  7. # systemctl reload * # 重新加载服务配置文件
  8. # systemctl is-enabled crond // 查询服务是否开机启动

systemd功能介绍

Systemd 是 Linux 的系统工具,用来启动守护进程,已成为大多数发行版的标准配置。

它的设计目标是,为系统的启动和管理提供一套完整的解决方案。
根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。

从CentOS7开始,CentOS的服务管理工具由SysV改为了systemd,但即使是在CentOS7里,也依然可以使用chkconfig这个原本出现在SysV里的命令。