用 systemd 管理后台常驻服务的几个坑
【摘要】 systemd 服务化的四个常见坑与避坑写法。
用 systemd 管理后台常驻服务的几个坑
把脚本做成 systemd 服务,能解决开机自启和崩溃拉起。但实际落地时有几个坑。
坑一:环境变量不继承
`ExecStart` 里的进程拿不到你 shell 里的 PATH 和自定义变量。解决:`EnvironmentFile=/etc/default/myapp`,或用 `Environment=PATH=/usr/local/bin:/usr/bin`。
坑二:WorkingDirectory 不设会用到 /
相对路径全部失效。务必显式写 `WorkingDirectory=/opt/app`。
坑三:Type 选错导致启动超时
`Type=simple` 表示命令一跑就算启动完成;如果进程会 fork,要用 `Type=forking`。选错会出现 `start operation timed out`。
坑四:日志看不到
`journalctl -u myapp -f` 才是正确姿势,别去 `tail` 文件了。
小结
systemd 不是魔法,它要求你把启动契约写清楚:谁、在哪、用什么环境、失败怎么办。写清楚这四个,服务就稳。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)