用 systemd 托管 Python AI 小工具

举报
yd_277333647 发表于 2026/11/05 20:41:08 2026/11/05
【摘要】 用 systemd 托管 Python AI 小工具很多 Python AI 小工具在终端里能跑,但一关窗口就停;想让它开机自启、崩溃后自动拉起,又不想引入复杂平台。Linux 自带的 systemd 就够用。下面以一个图片分类脚本为例,演示从虚拟环境到守护服务的完整流程。先准备目录和虚拟环境。把工具放在 /opt/ai-tool,用 venv 隔离依赖:bashsudo mkdir -p ...

用 systemd 托管 Python AI 小工具

很多 Python AI 小工具在终端里能跑,但一关窗口就停;想让它开机自启、崩溃后自动拉起,又不想引入复杂平台。Linux 自带的 systemd 就够用。下面以一个图片分类脚本为例,演示从虚拟环境到守护服务的完整流程。

先准备目录和虚拟环境。把工具放在 /opt/ai-tool,用 venv 隔离依赖:

bash
sudo mkdir -p /opt/ai-tool
sudo python3 -m venv /opt/ai-tool/venv
sudo /opt/ai-tool/venv/bin/pip install transformers torch pillow

脚本 classify.py 扫描指定目录中的图片,调用 Transformers 的图像分类管道,把结果写入标准输出:

python
from pathlib import Path
from transformers import pipeline

clf = pipeline("image-classification", model="google/vit-base-patch16-224")
for img in Path("/opt/ai-tool/images").glob("*.jpg"):
    top = clf(str(img))[0]
    print(f"{img.name}\t{top['label']}\t{top['score']:.4f}", flush=True)

手动运行确认无误后,创建 systemd 单元文件 /etc/systemd/system/ai-classify.service:

ini
[Unit]
Description=AI image classify tool
After=network-online.target

[Service]
Type=simple
User=aiuser
WorkingDirectory=/opt/ai-tool
ExecStart=/opt/ai-tool/venv/bin/python /opt/ai-tool/classify.py
Restart=on-failure
RestartSec=5
Environment=HF_HOME=/opt/ai-tool/.cache

[Install]
WantedBy=multi-user.target

几个细节很关键。ExecStart 必须写虚拟环境里 Python 的绝对路径,否则可能用到系统 Python;WorkingDirectory 和模型缓存目录要提前创建,并让专用用户 aiuser 有读写权限;Restart=on-failure 能在脚本异常退出时自动重启,但不要设置得过快,避免反复崩溃刷日志。若工具需要读取环境变量,可在单元里用 Environment 声明,而不是依赖登录 shell 的配置。

启用并查看状态:

bash
sudo systemctl daemon-reload
sudo systemctl enable --now ai-classify
sudo systemctl status ai-classify
journalctl -u ai-classify -f

修改代码后执行 sudo systemctl restart ai-classify 即可生效。日志统一走 journald,脚本里用 print(..., flush=True) 能及时看到输出;生产环境应控制日志量,避免把大段推理结果全部打进系统日志。如果只是每天定时批处理,不必常驻服务,可以改用 systemd timer 触发一次性任务。需要交互输入的 CLI 工具也不适合这样托管。

这个方案没有容器那么强的隔离性,但胜在轻量、直接、与 Linux 集成好。对入门者来说,先把 Python AI 小工具变成可管理、可观测、能自恢复的服务,比急着上复杂编排平台更实用。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。