.service 文件是 Linux 系统中 systemd 服务管理器的配置文件,用于定义如何启动、管理和监控系统服务(如后台程序、守护进程等)。以下是它的核心作用和详细使用指南:
1.定义服务行为
描述服务的启动命令、依赖关系、重启策略、运行环境等。
2.服务生命周期管理
通过 systemctl 命令启动、停止、重启服务,或设置开机自启。
3.统一管理标准
标准化服务的配置方式,简化运维操作。
一个典型的 .service 文件分为三个部分(以 [Unit]、[Service]、[Install] 为块):
定义服务的元信息和依赖关系。
1 2 3 4 5 |
[Unit] Description=服务描述 After=依赖的目标或服务(如 network.target) Requires=强依赖的其他服务 Wants=弱依赖的其他服务 |
定义服务运行的具体行为。
1 2 3 4 5 6 7 8 |
[Service] Type=服务类型(simple, forking, oneshot 等) ExecStart=启动命令 Restart=重启策略(no, on-failure, always) User=运行服务的用户 Group=运行服务的用户组 Environment=环境变量(如 PATH=/usr/bin) WorkingDirectory=工作目录 |
定义如何将服务安装到系统启动目标。
1 2 |
[Install] WantedBy=multi-user.target # 关联到多用户命令行模式 |
假设你有一个程序 /opt/chogori/bin/chogori-agent,需要将其配置为系统服务。
在 /etc/systemd/system/ 目录下创建文件 chogori-agent.service:
1 |
sudo nano /etc/systemd/system/chogori-agent.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Chogori Agent Service After=network.target
[Service] Type=simple ExecStart=/opt/chogori/bin/chogori-agent \ --config /opt/chogori/etc/agent.yaml \ --log /var/log/chogori/agent.log Restart=on-failure User=chogori Group=chogori Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
[Install] WantedBy=multi-user.target |
确保程序和配置文件可访问:
1 2 |
sudo mkdir -p /var/log/chogori sudo chown -R chogori:chogori /opt/chogori /var/log/chogori |
1 |
sudo systemctl daemon-reload |
启动服务:
1 |
sudo systemctl start chogori-agent |
设置开机自启:
1 |
sudo systemctl enable chogori-agent |
查看状态:
1 |
systemctl status chogori-agent |
停止服务:
1 |
sudo systemctl stop chogori-agent |
查看日志:
1 |
journalctl -u chogori-agent -f |
参数 | 作用 |
---|---|
Type=simple | 默认类型,直接运行 ExecStart 命令(前台运行)。 |
Type=forking | 适用于后台守护进程(需自行 fork)。 |
Restart=on-failure | 服务异常退出时自动重启(其他值:no, always, on-abnormal)。 |
User 和 Group | 指定运行服务的用户和组(提升安全性)。 |
单变量:
1 |
Environment="KEY=value" |
多变量:
1 |
Environment="KEY1=value1" "KEY2=value2" |
1 2 |
# 查看详细日志 journalctl -u chogori-agent -b --no-pager |
常见原因:
1 2 |
# 检查服务是否已启用 systemctl is-enabled chogori-agent |
修复:
1 |
sudo systemctl enable chogori-agent |