设置好了之后,不再需要每次都去代码文件中python -m app.main,直接开机自启动,再也不担心挂了。
即便是普通用户,不是root管理员用户依旧可以使用的方法。
一,查看是否启用了systemd用户服务
方法一,检查是否已启用 linger
loginctl show-user $(whoami) | grep Linger
输出:
Linger=yes→ 已启用,用户服务可开机自启 ✅Linger=no→ 未启用,用户服务只在你登录后运行 ❌
✅ 只要看到 Linger=yes,就说明你的用户服务可以在 不登录的情况下开机自启。
如果为no,那必须进行设置,一般都默认为yes
方法二:直接查看 linger 文件(无需权限)
linger 的状态实际上由一个文件控制:
ls /var/lib/systemd/linger/$(whoami)
- 如果文件 存在 → linger 已启用 ✅
- 如果提示
No such file or directory→ 未启用 ❌
💡 这个目录通常只有 root 能写,但普通用户可以读(所以能验证)。
如果没有启用,那么运行以下命令启用:
sudo loginctl enable-linger $(whoami)
你完全没有 sudo 权限(纯普通用户)
那你 无法自己启用 linger,必须请系统管理员(root)帮你执行一次:
# 管理员执行(替换 your_username)
sudo loginctl enable-linger your_username
一旦启用,后续你就可以自由使用 systemctl --user enable/start/... 管理服务,并且服务会在系统启动时自动运行(无需你登录)。
-
-
-
如果截止到这里依旧无法成功,最好去问问AI别的办法。
-
-
二,systemd已经确定启动之后,开始写systemd文件。
第一步:创建服务文件
请在终端中运行以下命令,创建一个配置文件:
mkdir -p ~/.config/systemd/user
# ~/.config/systemd/user/` 这个路径这是systemd用户服务的标准位置,由 systemd 官方规范定义。
nano ~/.config/systemd/user/{文件名}.service
# nano如果显示没有该命令,用vim(建议用vim):
vim ~/.config/systemd/user/{文件名}.service
# 进入后按 i 键开始编辑,看下面的“编辑页面中”,编辑完后按Esc后,再按:wq保存退出
编辑页面中:
[Unit]
# 这里写你的服务描述,怎么写都行
Description=My Python App Service
After=network.target
[Service]
# 1. 修改这里:你的代码所在的文件夹路径,cd命令进入你运行python -m app.main时的文件目录,pwd命令查看整体路径。
WorkingDirectory=/home/appuser/your_project_folder #这里写pwd查看到的路径
# 2. 修改这里:你的python绝对路径,先激活你的python虚拟环境venv,在用which python 命令查看
ExecStart=/usr/bin/python3 -m app.main
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
第二步:保存并启动
在 vim 中按 Esc,输入 :wq 保存退出,然后执行:
# 1.重载配置
systemctl --user daemon-reload
# 2. 开启开机自启
systemctl --user enable {文件名}.service
# 3. 启动服务
systemctl --user start {文件名}.service
# 4. 查看状态(检查是否报错)
systemctl --user status {文件名}.service
如果 status 显示 active (running),那就大功告成了!
✅ 查看你的服务日志的命令
# 实时跟踪日志(推荐!能看到最新输出,按 Ctrl+C 退出)
journalctl --user -u milvus-mcp.service -f
# 查看当前用户所有已加载的服务(包括运行/停止的)
systemctl --user list-units --type=service
# 只看正在运行的服务(最常用)
systemctl --user list-units --type=service --state=running
# 查看所有已启用(开机自启)的服务
systemctl --user list-unit-files --type=service --state=enabled
🔒 如果遇到权限问题(如你之前看到的红色错误):
请让管理员执行(只需一次):
sudo usermod -aG systemd-journal $USER
然后退出 SSH 重新登录,之后就能正常看日志了。
💡 替代方案(无需改权限):
如果你无法获得管理员权限,也可以在服务配置中主动把日志写入文件,例如:[Service] ExecStart=/app/venv313/bin/python -m app.main StandardOutput=append:/home/appuser/milvus.log StandardError=append:/home/appuser/milvus_error.log然后用
tail -f ~/milvus.log查看。
最终,确认我的服务已经开启了开机自启
✅ 验证分两步:
✅ 第一步:确认服务已启用(开机自启)
systemctl --user is-enabled milvus-mcp.service
- 输出
enabled→ 已设置开机自启 ✅ - 输出
disabled→ 未设置 ❌
✅ 第二步:确认 linger 已开启(关键!)
1loginctl show-user $(whoami) | grep Linger
- 输出
Linger=yes→ 即使你没登录,服务也能在后台运行 ✅ - 输出
Linger=no→ 你一登出,服务就停了 ❌
🎯 只有同时满足
enabled+Linger=yes,才能实现“服务器重启后自动启动,且无需人工登录” 。