3.4 系统服务管理工具systemd
systemd是一种新的系统和服务管理器,当Linux系统启动时,systemd是启动的第一个进程(代替了早期版本的init进程);当Linux系统关闭时,systemd也是最后一个结束的进程。systemd控制着启动的最后阶段并为使用系统做准备,同时也通过并行地装入多个服务而加快启动的速度。
Systemd允许用户管理在系统上的各种类型单元,包括服务(name.service)、目标(name.target)、设备(name.device)、文件系统加载点(name.mount)和套接字(name.socket)等。每个systemd单元是由相应的单元配置文件所定义的,它们分别存放的目录如下。
• /user/lib/systemd/system:以安装的RPM软件包发行的systemd单元。
• /run/systemd/system:在运行期间创建的systemd单元。
• /etc/systemd/system:由系统管理员所创建和管理的systemd单元,这些目录要优先于那些运行期间所创建的目录。
注意:在CentOS7版本的Linux系统中,init脚本已被systemd的服务单元所取代,服务单元的扩展名为“.service”。
3.4.1 启动、停止、重启服务
1.启动服务
启动服务需要使用命令如下:
systemctl start name.service
【例3-1】启动Apache HTTP服务器,即httpd服务。
步骤1:开启虚拟机,进入系统页面,在“应用程序”菜单栏中选择“系统工具”选项,然后在该选项菜单栏中单击“终端”按钮,如图3-10所示。
图3-10 选择“终端”
步骤2:进入终端页面,首先需要切换用户到root,如图3-11所示。
图3-11 切换用户
步骤3:在用户为root的终端页面中输入启动服务命令行,如图3-12所示。
图3-12 启动服务命令行
2.停止服务
停止服务,必须以root身份使用如下命令:
systemctl stop name.service
在【例3-1】的基础上输入停止服务命令行,如图3-13所示。
图3-13 停止服务命令行
3.重启服务
重启服务,有restart、try-start和reload三种选项。restart用于该服务在运行中的重启服务,如果该服务没有运行,它将重新启动该服务。Try-start只用于服务已经在运行中时重启该服务。而reload则会重新加载配置文件。
这三者的命令行分别如下:
# systemctl restart name.service # systemctl try-start name.service # systemctl reload name.service
在终端输入相应的重启服务命令行,如图3-14所示。
图3-14 重启服务命令行
3.4.2 查看、禁止、启用服务
(1)检查服务状态,可以使用status选项,命令如下:
# systemctl status name.service
(2)可以使用enable/disable选项来控制一个服务是否开机启动,命令如下:
# systemctl enable name.service # systemctl disable name.service
3.4.3 systemd命令和sysvinit命令对比
之前的Linux操作系统是使用service应用程序来启动和停止服务,但在最新版本的Linux系统中,系统提供了一个全新的应用程序systemctl,它可以取代原来的service工具。service应用程序和systemctl应用程序管理和维护服务命令的对照如表3-5所示。
表3-5 管理和维护服务命令对照表
systemctl这一工具不但可以完全取代service工具,而且它还可以取代chkconfig工具。在之前版本的Linux操作系统中,Linux系统是使用chkconfig应用程序来开启和禁止服务,而在新版本的Linux系统中,systemctl可以完全取代原来的chkconfig工具。chkconfig应用程序和systemctl应用程序开启和禁止服务命令的对照如表3-6所示。
表3-6 开启和禁止服务命令对照表
systemctl除了管理服务之外,还可以管理系统电源,例如对系统进程重启、关机和休眠的操作,如表3-7所示。
表3-7 管理系统电源命令表