453 字
2 分钟
linux systemd 服务管理器的使用
参考了以下文章, 写得超好!
简要命令
重载 systemd 配置
重载所有 unit 文件(常用)
sudo systemctl daemon-reload启动服务并设置开机启动
sudo systemctl start myapp.servicesudo systemctl enable myapp.service查看服务状态与日志
sudo systemctl status myappsudo journalctl -fu myapp列出所有服务
systemctl list-units --type=servicesystemd 用户模式 (好用!)
简单说,systemd 不只是给 root 用的。每个登录用户都可以跑自己的 systemd —user 实例,用来管理用户级别的后台服务和定时任务——不需要 sudo。
用户单元文件放在以下目录:
| 目录 | 用途 |
|---|---|
~/.config/systemd/user/ | 用户自定义的服务(推荐!) |
~/.local/share/systemd/user/ | 用户安装的服务 |
/usr/lib/systemd/user/ | 系统提供的用户服务模板 |
所有操作都带 —user 参数,和系统级的 systemctl 用法几乎一样:
systemctl --user start my-app # 启动systemctl --user stop my-app # 停止systemctl --user restart my-app # 重启systemctl --user status my-app # 查看状态systemctl --user enable my-app # 开机自启systemctl --user daemon-reload # 重新加载配置有一个前提:必须启用 linger,否则用户注销后所有用户服务都会被杀掉:
sudo loginctl enable-linger $USERloginctl show-user $USER | grep Linger # 确认输出 Linger=yessystemd文件配置示例
以这个博客的fastapi服务文件为例
[Unit]Description=Blog Fastapi ServiceAfter=network.target
[Service]WorkingDirectory=/home/mint/web/blog_backend/appEnvironment="PATH=/home/mint/web/blog_backend/.venv/bin:/usr/local/bin:/usr/bin"Environment="FASTAPI_DEPLOY=DEPLOY" # 用于区分测试和部署环境Environment="SMTP_USER=******" # 以下均是通过环境变量引入敏感数据Environment="SMTP_PASSWORD=******"Environment="SECRET_KEY=******"Environment="DB_USER=******"Environment="DB_PASSWORD=******"Environment="DB_NAME=******"Environment="DB_HOST=******"Environment="DB_SCHEMA=******"ExecStart=/home/mint/web/blog_backend/.venv/bin/gunicorn \ -w 4 \ -k uvicorn.workers.UvicornWorker \ --bind localhost:8051 \ --log-file=- \ main:appStandardOutput=journal # 将控制台输出重定向到journalRestart=always # 自动重启RestartSec=10LimitNOFILE=4096
[Install]WantedBy=default.target后记
还有定时器功能等等, 还没用上, 可先参考上方列出来的文章
linux systemd 服务管理器的使用
https://www.mintlab.top/posts/linux_systemd管理器/ 评论列表
以下是可爱的评论们:
暂无评论, 呜呜, 快来评论喵!

输入用户名和邮箱后自动检查登录状态。登录后用户名和邮箱将被绑定, 只可以修改头像和主页链接。