Ubuntu 配置服务后台运行
经常在工作中会把一些常用的功能,做成服务,供内网公共使用,极大的提高使用效率。
下面记录了在 Ubuntu 上配置服务后台运行的标准流程,可以拿来即用。
1、创建systemd服务文件
sudo vi /etc/systemd/system/myservice.service
把其中的 myservice 改为自己的服务名。
2、编辑文件内容
这是关键的一步,配置内容就是我们服务的启动参数信息。
[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 Service
服务的简短描述,用于systemctl status等命令中显示服务用途。可自定义。After=network.target
指定本服务在network.target(网络已就绪)之后启动。Systemd 会尽量满足顺序要求,但不保证依赖的服务完全运行成功,只保证network.target已启动。
[Service] 段 – 服务运行行为
Type=simple
服务类型为simple,表示ExecStart启动的进程就是服务的主进程,systemd 会立即启动后续单元,不等待进程 fork 或通知就绪。这是最常用的类型。User=yourusername
指定运行该服务的用户身份。这里以yourusername为例,需替换为实际系统用户名。使用非 root 用户可提升安全性。WorkingDirectory=/path/to/your/app
设置服务进程的工作目录。启动服务前会cd到此路径,相对路径命令将基于此目录解析。建议替换为实际应用目录。ExecStart=/usr/bin/python3 /path/to/your/app/main.py
服务启动时执行的完整命令行。第一个参数是可执行文件路径(此处为 Python3 解释器),后续为传给它的参数。必须使用绝对路径。Restart=always
服务退出后的重启策略。always表示无论进程退出代码是什么(正常退出、崩溃、被杀死等),都会自动重启。其他可选值:no、on-success、on-failure、on-abnormal等。RestartSec=10
重启前的等待时间,单位为秒。即服务停止后等待 10 秒再尝试启动,避免频繁重启导致系统负载过高。
[Install] 段 – 服务安装配置
WantedBy=multi-user.target
定义该服务被哪个“目标(target)”环境所依赖。multi-user.target代表多用户命令行运行级别(类似传统 runlevel 3)。当启用服务(systemctl enable)时,systemd 会在/etc/systemd/system/multi-user.target.wants/目录下创建该服务的软链接,从而在系统启动进入多用户模式时自动启动本服务。
3、管理服务常用命令
# 重新加载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 提供一份正确的养料。