Linux 从入门到项目实践(超值版)
上QQ阅读APP看书,第一时间看更新

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 管理系统电源命令表