一、systemd的由来
systemd即为system daemon,是linux下的一种init软件,由Lennart Poettering带头开发,systemd这一名字源于Unix中的一个惯例:在Unix中常以"d"作为系统守护进程(英语:daemon,亦称后台进程)的后缀标识。除此以外,systemd亦是借代英文术语D体系,而这一术语即是用于描述一个人具有快速地适应环境并解决困难的能力。systemd已纳入众多Linux发行版的软件源中。
二、介绍
1、Linux系统和服务管理器
Systemd是一个更高效的系统和服务管理器,是内核引导之后加载的第一个初始化进程(PID=1),负责掌控整个Linux的运行/服务资源组合,在开机时服务并行启动,各系统服务间的精确依赖。
三、主要的管理工具systemctl
1、配置文件
配置目录:/etc/systemd/system
脚本目录:/run/systemd/system
服务目录:/lib/systemd/system
2、unit分类
Systemd 可以管理的系统资源。不同的资源统称为 unit(单元),unit有13种。
序号 | 资源名称 | 含义 |
1 | service | 系统服务 |
2 | socket | 用于标识进程间通信的socket |
3 | busname | 用于设定与此服务通信所使用的D-Bus名称 |
4 | target | 用于模拟实现“运行级别” |
5 | snapshot | 管理系统快照 |
6 | device | 硬件设备 |
7 | mount | 文件系统挂载点 |
8 | automount | 自动挂载点 |
9 | swap | 用于标识swap设备(交换空间) |
10 | timer | 定时器 |
11 | path | 文件或路径 |
12 | slice | 进程组 |
13 | scope | 不是由systemd启动的外部进程 |
3、管理unit
1)常见命令
systemctl start unit #启动服务
systemctl stop unit #停止服务
systemctl restart unit #重启服务
systemctl enable unit #开机自启服务
systemctl enable --now unit #设置开机自启并立即开启服务
systemctl is-enable unit #查看服务是否开机自启
systemctl disable unit #禁止开机自启服务
systemctl kill unit #杀死unit的所有进程
systemctl reload unit #重新加载unit的配置文件
systemctl daemon-reload #重新加载所有修改过的配置文件
2)实例
[root@wangwu ~]# systemctl start httpd
[root@wangwu ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2022-10-23 21:08:08 CST; 1min 2s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 110860 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
Tasks: 6
CGroup: /system.slice/httpd.service
├─110860 /usr/sbin/httpd -DFOREGROUND
├─110861 /usr/sbin/httpd -DFOREGROUND
├─110862 /usr/sbin/httpd -DFOREGROUND
├─110863 /usr/sbin/httpd -DFOREGROUND
├─110864 /usr/sbin/httpd -DFOREGROUND
└─110865 /usr/sbin/httpd -DFOREGROUND
Oct 23 21:08:08 wangwu systemd[1]: Starting The Apache HTTP Server...
Oct 23 21:08:08 wangwu httpd[110860]: AH00558: httpd: Could not reliably d...ge
Oct 23 21:08:08 wangwu systemd[1]: Started The Apache HTTP Server.
注:
Loaded行:配置文件的位置,是否设为开机启动
Active行:表示正在运行
Main PID行:主进程ID
Status行:由应用本身提供的软件当前状态
CGroup块:应用的所有子进程
日志块:应用的日志
[root@wangwu ~]# systemctl stop httpd
[root@wangwu ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd(8)
man:apachectl(8)
Sep 29 17:45:02 wangwu systemd[1]: Unit httpd.service cannot be reloaded b...e.
Oct 23 21:08:08 wangwu systemd[1]: Starting The Apache HTTP Server...
Oct 23 21:08:08 wangwu httpd[110860]: AH00558: httpd: Could not reliably d...ge
Oct 23 21:08:08 wangwu systemd[1]: Started The Apache HTTP Server.
Oct 23 21:24:02 wangwu httpd[116627]: AH00558: httpd: Could not reliably d...ge
Oct 23 21:24:02 wangwu systemd[1]: Reloaded The Apache HTTP Server.
Oct 23 21:24:09 wangwu systemd[1]: Stopping The Apache HTTP Server...
Oct 23 21:24:10 wangwu systemd[1]: Stopped The Apache HTTP Server.
[root@wangwu ~]# systemctl restart httpd
[root@wangwu ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@wangwu ~]# systemctl enable --now httpd
[root@wangwu ~]# systemctl is-enabled httpd
enabled
[root@wangwu ~]# systemctl disable httpd
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@wangwu ~]# systemctl is-enabled httpd
disabled
[root@wangwu ~]# systemctl kill httpd
[root@wangwu ~]# systemctl reload httpd
[root@wangwu ~]# systemctl daemon-reload
4、系统管理(请勿轻易尝试)
systemctl reboot #重启系统
systemctl poweroff #退出系统并关闭电源
systemctl halt #CPU停止工作
systemctl suspend #挂起系统
systemctl hibernate #系统休眠
systemctl hybrid-sleep #系统休眠并挂起:
5、查看系统服务
1)命令
systemctl -t service #查看活动的系统服务
systemctl -t service --all #列出所有系统服务(包括不活跃的)
2)实例
[root@wangwu ~]# systemctl -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
注:
UNIT #单元
LOA #是否存在
ACTIVE #是否激活
SUB #状态
DESCRIPTION #描述
[root@wangwu ~]# systemctl -t service --all
UNIT LOAD ACTIVE SUB DESCRIPTION
● apparmor.service not-found inactive dead apparmor.service
6、运行级别
1)级别划分
系统的运行级别,分为七个级别,每种运行级别代表特定的操作模式,分别用数字0-6表示。
RHEL5、6 | RHEL7 |
级别 | 含义 |