Linux服务实操教程:systemd服务的创建、启动与管理
在Linux系统中,服务本质上是一个在后台持续运行的程序。systemd是主流Linux发行版默认的服务管理系统,而systemctl则是用于管理服务的命令行工具。
简单来说,可以把服务理解为一辆汽车:可以启动它、停止它,也可以检查它的运行状态。systemd就像隐藏在幕后的引擎,自动处理服务的启动、停止和监控等复杂工作。
学习目标
完成本教程后,你将掌握以下技能:
- 创建自定义systemd服务
- 使用systemctl启动和停止服务
- 配置服务开机自启动
- 干净地删除服务及相关文件
步骤一:创建后台脚本
首先创建一个用于测试的脚本文件:
sudo nano ~/backup_task.sh
写入以下内容:
#!/bin/bash
while true
do
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Backup task is running"
sleep 10
done
保存退出(Ctrl+O,回车,Ctrl+X)。
赋予执行权限:
chmod +x ~/backup_task.sh
步骤二:创建systemd服务单元文件
systemd通过服务单元文件(service unit file)来定义如何运行服务。创建以下文件:
sudo nano /etc/systemd/system/backup.service
写入配置内容:
[Unit]
Description=Scheduled Backup Service
[Service]
Type=simple
ExecStart=/home/username/backup_task.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
注意:将上面配置中的/home/username/替换为你的实际用户名路径。
配置参数说明:
Description:服务的描述信息Type=simple:服务为前台运行类型ExecStart:指定要执行的脚本路径Restart=on-failure:服务异常退出时自动重启WantedBy:指定服务在多用户模式下启动
步骤三:重载systemd并启动服务
创建服务单元文件后,需要通知systemd重新加载配置,然后启动服务:
sudo systemctl daemon-reload
sudo systemctl start backup.service
步骤四:检查服务状态
验证服务是否正常启动:
sudo systemctl status backup.service
如果服务运行正常,输出应显示active (running)状态。
步骤五:停止服务
需要停止服务时使用:
sudo systemctl stop backup.service
步骤六:配置开机自启动
启用开机自启动:
sudo systemctl enable backup.service
禁用开机自启动:
sudo systemctl disable backup.service
步骤七:查看服务日志
实时查看服务日志输出:
sudo journalctl -u backup.service -f
参数-f表示follow模式,类似tail -f的效果。
停止服务后查看历史日志:
sudo journalctl -u backup.service
步骤八:清理删除
完全删除服务及所有相关文件:
sudo systemctl stop backup.service
sudo systemctl disable backup.service
sudo rm /etc/systemd/system/backup.service
sudo systemctl daemon-reload
sudo rm ~/backup_task.sh
执行上述命令后,系统恢复干净状态,不留任何残余配置。
工作流程示意
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 单元配置文件 │───▶│ systemd │───▶│ 运行进程 │
│ .service │ │ 管理器 │ │ 后台服务 │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
/etc/systemd/ systemctl journalctl
system/ 管理命令 日志查看