第7章 Linux服务管理实战:玩转Systemd服务控制

2,326 阅读4分钟

上一章掌握Linux进程管理 节我们了解如何监控、调整以及优化系统中的进程。接下来,我们将视线转向Linux系统内核的另一关键领域——服务管理,如何启动、停止和安装服务。

知识回顾

Systemd为系统的启动和管理提供一套完整的解决方案。根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就 是它要守护整个系统。使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进程(PID 等于1),其他进程都是它的子进程。Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。systemctl是 Systemd 的主命令,用于管理系统。Systemd 可以管理所有系统资源。不同的资源统称为 Unit(单位)。

Unit 一共分成 12 种。

Service unit:系统服务

Target unit:多个 Unit 构成的一个组

Device Unit:硬件设备

Mount Unit:文件系统的挂载点

Automount Unit:自动挂载点

Path Unit:文件或路径

Scope Unit:不是由 Systemd 启动的外部进程

Slice Unit:进程组

Snapshot Unit:Systemd 快照,可以切回某个快照

Socket Unit:进程间通信的 socket

Swap Unit:swap 文件

Timer Unit:定时器

systemctl list-units命令可以查看当前系统的所有 Unit 。

在操作系统中,服务是指执行指定系统功能,以便支持其他程序的进程,简言之,服务就是一些特定的进程。Linux系统提供了特定的命令,以便管理各种服务,在Centos 7 之前的版本中,用于管理服务的命令为service和chkconfig,Centos 7及其之后的版本统一使用systemctl命令管理服务。

Systemctl命令实际上是service和chkconfig命令的组合,该命令的格式如下:

Systemctl 功能 服务名称

enable:使指定服务开机自启。

disable: 取消指定服务开机自启。

start:启动指定服务

stop:停止指定服务

status:检查指定服务运行情况,列出该服务的详细信息。

restart:重启指定服务

reload:重新加载指定服务的配置文件(并非所有服务都支持该参数,使用restart可实现相同功能)。

Kill:杀死一个服务的所有子进程

Linux系统中常使用systemctl命令管理服务如下表所示:

查看系统所有开机自启动服务systemctl list-units --type=service

注意:如果有时候安装了python造成防火墙启动不成功的原因:

vim /usr/sbin/firewalld

第一行,修改成#!/usr/bin/python2 -Es

重启或者查看某个服务状态

systemctl restart abrtd.service 
systemctl status abrtd.service

设置服务开机启动

登录后复制 
systemctl enable nginx.service //设置nginx开机启动

systemctl enable php-fpm.service  //php-fpm开机启动

搜索指定状态的服务

systemctl list-unit-files | grep enabled  //搜索全部已启动的服务,enabled 启用;disabled 禁用。

搜索指定服务的状态

systemctl list-unit-files | grep nginx  //搜索 nginx 的开机启动状态

任务描述

systemctl是 Systemd 的主命令,用于管理系统。

1、关闭http服务

2、开启http服务

3、取消http服务开机自启

4、设置http服务开机自启

5、查看http服务的运行状态

6、重启系统

7、关闭系统、切断电源

8、CPU停止工作

9、暂停系统

10、让系统进入冬眠状态

11、让系统进入交互性休眠状态

12、启动进入救援状态(单用户状态)

任务准备

  1. 前提条件是Linux操作系统已经正常运行。
  2. Httpd服务已经安装,如果未安装使用yum -y install httpd安装
  3. 桌面右键打开终端或远程SSH连接操作Linux服务器。
  4. 学会帮助命令,在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档; linux系统内置的帮助文档很详细,通常能解决我们的问题,我们需要掌握如何正确的去使用它们。
  • 在只记得部分命令关键字的场合,我们可通过man -k来搜索;
  • 需要知道某个命令的简要说明,可以使用whatis;而更详细的介绍,则可用info命令;
  • 查看命令在哪个位置,我们需要使用which;
  • 而对于命令的具体参数及使用方法,我们需要用到强大的man;

任务实施

1、安装httpd服务

[root@localhost /]# yum -y install httpd

2、启动httpd服务

[root@localhost /]# systemctl start httpd

3、停止http服务

[root@localhost /]# systemctl stop httpd

4、设置httpd开机自启

[root@localhost /]# systemctl enable httpd

5、显示http服务当前状态

[root@localhost /]# systemctl status httpd

6、取消http服务开机自启

[root@localhost /]# systemctl disable httpd

7、重启系统

[root@localhost /]#  sudo systemctl reboot

8、关闭系统,切断电源

[root@localhost /]# sudo systemctl poweroff

9、CPU停止工作

[root@localhost /]# sudo systemctl halt

10、暂停系统

[root@localhost /]# sudo systemctl suspend

11、让系统进入冬眠状态

[root@localhost /]# sudo systemctl hibernate

12、让系统进入交互式休眠状态

[root@localhost /]# sudo systemctl hybrid-sleep

13、启动进入救援状态(单用户状态)

[root@localhost /]# sudo systemctl rescue

实验实训

image.png