经常在工作中会把一些常用的功能,做成服务,供内网公共使用,极大的提高使用效率。
下面记录了在 Ubuntu 上配置服务后台运行的标准流程,可以拿来即用。
sudo vi /etc/systemd/system/myservice.service
把其中的 myservice 改为自己的服务名。
这是关键的一步,配置内容就是我们服务的启动参数信息。
[Unit]
Description=My Custom Service
After=network.target
[Service]
Type=simple
User=yourusername
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/python3 /path/to/your/app/main.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
[Unit] 段 – 服务描述与依赖关系Description=My Custom Servicesystemctl status 等命令中显示服务用途。可自定义。After=network.targetnetwork.target(网络已就绪)之后启动。Systemd 会尽量满足顺序要求,但不保证依赖的服务完全运行成功,只保证 network.target 已启动。[Service] 段 – 服务运行行为Type=simplesimple,表示 ExecStart 启动的进程就是服务的主进程,systemd 会立即启动后续单元,不等待进程 fork 或通知就绪。这是最常用的类型。User=yourusernameyourusername 为例,需替换为实际系统用户名。使用非 root 用户可提升安全性。WorkingDirectory=/path/to/your/appcd 到此路径,相对路径命令将基于此目录解析。建议替换为实际应用目录。ExecStart=/usr/bin/python3 /path/to/your/app/main.pyRestart=alwaysalways 表示无论进程退出代码是什么(正常退出、崩溃、被杀死等),都会自动重启。其他可选值:no、on-success、on-failure、on-abnormal 等。RestartSec=10[Install] 段 – 服务安装配置WantedBy=multi-user.targetmulti-user.target 代表多用户命令行运行级别(类似传统 runlevel 3)。当启用服务(systemctl enable)时,systemd 会在 /etc/systemd/system/multi-user.target.wants/ 目录下创建该服务的软链接,从而在系统启动进入多用户模式时自动启动本服务。# 重新加载systemd配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start myservice
# 设置开机自启
sudo systemctl enable myservice
# 查看服务状态
sudo systemctl status myservice
# 停止服务
sudo systemctl stop myservice
# 查看日志
sudo journalctl -u myservice -f
正常情况下,按上面配置文件配置后启动服务,status 查看服务状态是 active (running) 就没什么问题,如果有问题,也会提示具体的错误,发给 AI 定位排查一下即可。
以上,希望能给你的 AI 提供一份正确的养料。