欢迎访问宙启技术站
智能推送

CentOS 7下systemd管理的详解

发布时间:2023-05-16 12:01:29

Systemd是Linux系统下的一个服务管理器,能够对系统中的所有服务进行管理和监控。它可以启动、停止、重启系统服务,也可以列出当前系统所有的服务及其状态,并提供了日志管理等功能。CentOS 7默认采用systemd来管理服务,本文将对systemd在CentOS 7下的详细应用进行介绍。

1. systemd单元

systemd将系统中的服务、套接字、设备和挂载点等定义为单元(unit)。单元定义在/usr/lib/systemd/system或/etc/systemd/system目录下的文本文件中,以.service、.socket、.device、.mount等后缀结尾的文件分别表示不同的单元类型。

以服务单元为例,我们来看一个Nginx的服务单元文件nginx.service的定义:

[Unit]

Description=The nginx HTTP server

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/bin/kill -s HUP $(/usr/sbin/nginx -q -p /usr/local/nginx/)

ExecStop=/bin/kill -s QUIT $(/usr/sbin/nginx -q -p /usr/local/nginx/)

[Install]

WantedBy=multi-user.target

上述单元文件定义了Nginx服务单元的名称、描述、依赖性、服务类型、启动命令、重载命令、停止命令和自动启动级别等信息。类似的单元文件还可以定义套接字、设备、挂载点等不同类型的单元。

2. systemd命令

systemd提供了一些命令来管理和监控系统单元。以下是常用的几个命令:

systemctl start unit:启动单元

systemctl stop unit:停止单元

systemctl restart unit:重启单元

systemctl reload unit:重载单元

systemctl status unit:查看单元状态

systemctl enable unit:设置服务单元为开机启动

systemctl disable unit:设置服务单元为不开机启动

systemctl is-enabled unit:查询服务单元是否开机启动

systemctl list-unit-files:查看所有已定义的单元文件

systemctl list-units:列出所有的单元

通过systemctl命令,我们可以方便地启动、停止、重载、重启和查看系统中所有单元的状态。

3. systemd的日志管理

systemd在CentOS 7中还负责管理系统日志,它可以把日志收集到一个集中的地方,并且能够对日志进行筛选和检索。以下是常用的几个命令:

journalctl:查看日志

journalctl -u unit:查看某个单元的日志

journalctl --since "2019-01-01":查看2019年1月1日至今的日志

journalctl -f:实时查看日志

journalctl -k:查看内核日志

通过journalctl命令,我们可以方便地查看系统中所有的日志,而无需手动搜索日志文件。

4. 拓展功能

除了基本的命令和功能外,systemd还提供了多种插件和拓展功能。例如,我们可以使用systemd-networkd插件来管理网络,使用systemd-timers插件来管理计划任务。

systemd在CentOS 7下的应用非常广泛,不仅能够方便地管理系统中所有的服务和单元,还可以通过统一的方式管理系统日志和计划任务等,具有非常好的可维护性和可扩展性,是一款非常优秀的服务管理器。