别再用 nohup,用 systemd 管住常驻脚本
崩溃自动重启、日志自动收集、开机自动拉起,三件事一次解决。
nohup 的三个问题
用 nohup 起的进程,不会在崩溃后自动重启,日志要自己重定向,重启机器后也不会自动拉起。临时用可以,长期跑迟早出问题。
systemd 的 unit 文件把这三件事都管了:Restart 控制重启策略,journalctl 直接看日志,enable 之后开机自动启动。
最小可用的 unit
一个够用的 unit 里要写清 ExecStart、WorkingDirectory、Restart=always 和 RestartSec。再按需要补 User,避免以 root 身份跑业务进程。
排查启动失败
改完 unit 要先 daemon-reload,否则改动不生效。启动失败时 systemctl status 只给一个笼统的结论,真正的报错要 journalctl -u 服务名 -n 50 去看。
两个容易忽略的细节
如果 unit 里的路径写错,报错会出现在 journal 里而不是 status 里;另外脚本本身的可执行权限也要确认,否则会以权限错误的形式失败。