欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 在Linux中如何编写*.service文件?

在Linux中如何编写*.service文件?

2025/6/22 15:16:43 来源:https://blog.csdn.net/qq_56408123/article/details/148809514  浏览:    关键词:在Linux中如何编写*.service文件?

概述

  1. 背景说明:常用的开启自启动除了通过rc.local的方式,还可以通过*.service的方式达到我们想要的效果。
  2. 问题阐述:如何通过*.service的方式达到开机自启的效果?

具体实现

1. .service文件位置

  • 系统级服务:/etc/systemd/system
  • 软件包自带服务:/usr/lib/systemd/system

2. 基本文件结构

[Unit]
Description=服务描述
After=依赖的其他服务.taget[Service]
Type=服务类型
ExecStart=启动命令
User=运行用户
Restart=重启策略[Install]
WanteBy=目标.target
[Unit]部分[Service]部分[Install]部分
Description:服务器描述(必填)Type(必填):
1. simple:默认类型,主进程由systemd启动。
2. foking:后台守护进程(指定PIDFile=)。
3. oneshot:单次执行(如初始化脚本)。
4. ontify:服务就绪后发送通知。
WantedBy:指定服务所属Target(如multi-user.taget
After:定义启动顺序(如network.targetUser/Group:运行身份(避免使用root!)
Requires:强依赖服务(依赖失败则本服务失败)ExecStart(必填):
绝对路径启动命令(如/usr/bin/python3 /app/main.py
Wants:弱依赖服务(依赖失败不影响本服务)ExecStop:自定义停止命令
Restart:
1. on-failure:非正常退出时重启。
2. always:总是重启。
3. no:不重启
RestartSec:重启等待时间(如5S
Environment:环境变量(如Environment="PORT=8080"
WorkingDirectory:工作目录路径

3. 案例

[Unit]
Description=My Python Web App
After=network.target postgresql.service[Service]
Type=simple
User=appuser
Group=appgroup
WorkingDirectory=/opt/myapp
Environment="DB_HOST=localhost"
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
RestartSec=10
StandardOutput=syslog
StandardError=syslog[Install]
WantedBy=multi-user.target

4. 启动服务

# 1. 创建服务文件
sudo nano /etc/systemd/system/myapp.service# 2. 重载systemd配置
sudo systemctl daemon-reload# 3. 启动服务
sudo systemctl start myapp# 4. 设置开机自启
sudo systemctl enable myapp# 5. 检查状态
sudo systemctl status myapp

5. 调试技巧

  • 日志查看:
journalctl -u myapp.service -f  # 实时日志
  • 验证文件语法:
systemd-analyze verify /etc/systemd/system/myapp.service

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com