第十六节:系统服务与启动管理(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 提供统一的服务、启动、日志管理机制,掌握它能让你更高效地维护系统服务,开发和部署后台服务程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值