第十六节:系统服务与启动管理(systemd)

Linux 系统的服务和启动流程关系到系统的稳定性和启动速度,而 systemd 是当前主流 Linux 发行版(如 CentOS 7+/Ubuntu 16.04+)默认采用的初始化系统和服务管理器。

一、什么是 systemd?

  • systemd 是一种初始化系统(init system),用于在系统启动时初始化服务、挂载文件系统、设置网络等。

  • 它取代了传统的 SysVinitUpstart,具备并发启动、依赖关系管理、日志统一管理等优势。

二、常见 systemctl 命令

命令 说明
systemctl start 服务名 启动服务
systemctl stop 服务名 停止服务
systemctl restart 服务名 重启服务
systemctl status 服务名 查看服务状态
systemctl enable 服务名 设置服务开机自启
systemctl disable 服务名 取消服务开机自启
systemctl is-enabled 服务名 判断是否开机自启
systemctl list-units --type=service 查看所有已加载的服务单元

三、服务单元(Unit)的类型 

类型 说明
.service 普通服务
.socket 套接字服务
.mount 文件系统挂载点
.target 启动目标(类似运行级别)
.timer 定时服务
.device 设备单元

四、开机启动管理

查看当前的默认启动目标(相当于旧系统的运行级别):

systemctl get-default
设置为多用户文本界面(无图形):
sudo systemctl set-default multi-user.target
设置为图形界面:
sudo systemctl set-default graphical.target

五、服务状态查看与日志分析

查看某个服务的详细运行日志(由 journald 管理):

journalctl -u 服务名

查看所有系统日志:

journalctl

按时间过滤日志:

journalctl --since "2024-05-01 10:00" --until "2024-05-01 12:00"

实时查看日志:

journalctl -f

 

六、自定义 systemd 服务

可创建自定义服务单元文件放在 /etc/systemd/system/myapp.service,例如:

[Unit]
Description=My App Service
After=network.target

[Service]
ExecStart=/usr/local/bin/myapp
Restart=always

[Install]
WantedBy=multi-user.target

然后执行:

sudo systemctl daemon-reexec       # 重启 systemd 管理器(建议)
sudo systemctl daemon-reload       # 重新加载配置
sudo systemctl enable myapp.service
sudo systemctl start myapp.service

七、关机与重启命令

reboot            # 重启
poweroff          # 关机
halt              # 停止所有进程
systemctl reboot  # 推荐重启方式
systemctl poweroff # 推荐关机方式

八、小结

systemd 提供统一的服务、启动、日志管理机制,掌握它能让你更高效地维护系统服务,开发和部署后台服务程序。

你可能感兴趣的:(postgresql,数据库)