Linux06-服务、守护进程和systemd

目录

一、简介systemd

二、使用systemd

2.1、systemctl命令与systemd单元

2.2、控制系统服务


一、简介systemd

RHEL6及以前,系统启动和服务器进程是由第一个进程 init 管理,init按顺序启动、启动慢。
RHEL7以后系统启动和服务器进程由 systemd系统和服务管理器进行管理。后台程序是在执行各种任务的后台等待或运行的进程。一般情况下,守护进程在系统启动时自动启动并持续运行至关机或被手动停止,按照惯例守护进程名字以字母“d”结束。RHEL7中PID=1属于systemd,systemd具有以下优点:

  • 并行化启动,提高系统启动速度。
  • 按需启动守护进程,不需要单独的服务。
  • 自动服务依赖关系管理,可以防止长时间超时。
  • 利用Linux控制组一起追踪相关进程的方式。

二、使用systemd

2.1、systemctl命令与systemd单元

systemctl命令用于管理各类systemd单元。可以通过systemctl -t help命令显示可用单元类型列表。常用的单元类型有service服务单元、socket套接字单元、path路径单元。

  • service服务单元具有.service扩展名,代表系统服务。这种单元用于启动经常访问的守护进程,如httpd.service。
  • socket套接字单元具有.socket扩展名,代表进程间通信(IPC)套接字。套接字的控制可以建立客户端连接时传递到守护进程或新启动的服务。套接字单元用于延迟于系统启动的服务启动,或者按需启动不常用的服务。
  • path路径单元具有.path扩展名,用于将服务的激活推迟到特定文件系统更改发生之后。通常用于使用假脱机目录的服务,如打印系统。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@server0 ~]# systemctl -t help
Available unit types:
service
socket
target
device
mount
automount
snapshot
timer
swap
path
slice
scope
[root@server0 ~]#

2.2、控制系统服务

使用systemctl命令来控制系统服务。

命令 任务 备注
systemctl list-units --type=socket 列出系统中某一类型的单元

本例是列出socket单元

systemctl status UNIT 查看服务状态。

服务状态的几个关键字:

  • loaded单元配置文件已经处理
  • active(running)正在运行
  • active(exited)已成功完成一次性配置
  • active(waiting)运行中,但正在等待事件
  • inactive不在运行
  • enabled开机启动
  • disabled不会开机启动
  • 静态,无法启动,但可以由某一个启动的单元自动启动。

此外还可以看到进程的PID和简要日志等信息。

systemctl is-active UNIT 查看服务是否运行
systemctl start UNIT 启动一个服务
systemctl stop UNIT 停止一个服务

systemctl restart UNIT

重新启动一个服务 此时相当于先stop再start,进程的PID会发生变化。
systemctl reload UNIT 重新加载一个服务 服务重新读取和加载配置文件,而不完全停止和启动服务。进程的PID不会改变。

systemctl is-enabled UNIT

查看服务是否开机启动

systemctl enable UNIT

设置开机启动 养成良好习惯,安装完一个服务先设置开机启动,再把它启动起来!!!
systemctl disable UNIT 设置开机不启动
systemctl mask UNIT 屏蔽服务

有时系统中可能安装了相互冲突的服务,例如,可以通过多种方式管理防火墙(iptables和firewalld)。为了防止管理员意外启动后一服务,可以将该服务屏蔽。

disabled的服务不会开机启动,但是可以手动启动。

mask屏蔽的服务不会开机启动,也不能手动启动。

systemctl unmask UNIT 取消屏蔽

systemctl list-dependencies UNIT

列出指定单元的依赖单元