上一章掌握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、启动进入救援状态(单用户状态)
任务准备
- 前提条件是Linux操作系统已经正常运行。
- Httpd服务已经安装,如果未安装使用yum -y install httpd安装
- 桌面右键打开终端或远程SSH连接操作Linux服务器。
- 学会帮助命令,在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