ubuntu server 24 系统使用systemd 托管服务

优势:开机自启、程序崩溃自动重启、统一日志管理 journalctl,服务器重启自动拉起。
适合长期持续运行的服务(Flask、定时脚本、常驻 python 程序)
操作步骤
1、创建服务文件
sudo nano /etc/systemd/system/a_py.service
执行上句后,即打开一个文件,可右键粘贴内容,完事后,如何关闭?
先写完配置内容 按快捷键:Ctrl + O (字母 O,不是零)→ 保存写入磁盘 提示文件名,直接回车确认,使用默认文件名 a_py.service 再按 Ctrl + X 退出 nano 编辑器,回到 shell 终端
nano 编辑器保存 & 退出操作(sudo nano /etc/systemd/system/a_py.service)
先写完配置内容
按快捷键:Ctrl + O (字母 O,不是零)→ 保存写入磁盘
提示文件名,直接回车确认,使用默认文件名 a_py.service
再按 Ctrl + X 退出 nano 编辑器,回到 shell 终端
补充常用快捷键
Ctrl + O:保存(Write Out)
Ctrl + X:退出
Ctrl + C:取消操作,不保存直接退出
Ctrl + W:搜索文本
如果修改后不想保存:按Ctrl+X,当提示是否保存修改时,输入N,直接放弃改动退出。
由于端口被占用,会循环检查而导致终端卡死,
但宝塔中, 由于网页向服务器传送命令时会中断,传不到服务器出现的卡死现象,这时候,重新打开一个浏览器标签,再开一个终端,然后停止服务
# 停止你的api服务 sudo systemctl stop a_py.service # 找到卡死的journalctl进程并杀死 ps aux | grep journalctl kill -15 这里替换成查到的PID 如果 kill 没反应,使用 kill -9 PID
回到原来卡住的窗口,一般会自动退出到命令行;如果还是不动,直接关闭这个旧终端标签即可,不会影响服务器上运行的程序。
以后规避这个卡死问题,尽量不用 -f 实时跟踪
# 查看最新200行日志,一次性输出,不会卡住 journalctl -u a_py.service -n 200 --no-pager
2、写入内容(修改路径为你真实的脚本路径)
[Unit] Description=My python a.py service After=network.target [Service] # 运行用户,宝塔一般是www或者ubuntu,按需修改 User=www # 虚拟环境python绝对路径 + 脚本绝对路径 ExecStart=/myenv/bin/python3 /www/a.py # 崩溃自动重启 Restart=on-failure RestartSec=3 [Install] WantedBy=multi-user.target
3、重载 systemd,设置开机自启并启动
sudo systemctl daemon-reload sudo systemctl enable a_py.service sudo systemctl start a_py.service
4、补充常用管理命令:
# 查看状态 sudo systemctl status a_py.service # 查看实时日志 journalctl -u a_py.service -f # 停止服务 sudo systemctl stop a_py.service # 重启服务 sudo systemctl restart a_py.service

























