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