我知道 cron 应该是“坚如磐石”、可靠的等等。但我似乎无法正确完成一项简单的工作设置
我做了什么?
chmod a+x scriptname.sh
ps -ef | grep cron
。它向我展示了 /usr/sbin/cron -f
的 root crontab -e
并添加了这样的脚本*/5 * * * * /full/path/to/script.sh
保存时,crontab 告诉我已经
installing new crontab
现在,当我终止进程并等待超过 5 分钟时……什么也没有发生。该过程将不会重新启动。
我一定是做了一些非常错误非常愚蠢的事情。
编辑:我检查了
journalctl
并发现每 5 分钟有以下常规条目。然而,该脚本要么不运行……要么当 cron 会话结束时从它启动的进程不会持续??
Jun 26 09:40:01 raspberrypi CRON[2135]: pam_unix(cron:session): session opened for user XXXXXX(uid=1000) by (uid=0)
Jun 26 09:40:01 raspberrypi CRON[2135]: pam_unix(cron:session): session closed for user XXXXXX
Jun 26 09:45:01 raspberrypi CRON[2345]: pam_unix(cron:session): session opened for user XXXXXX(uid=1000) by (uid=0)
Jun 26 09:45:01 raspberrypi CRON[2345]: pam_unix(cron:session): session closed for user XXXXXX
这是正在运行的脚本:
#!/bin/bash
ps --no-headers -C node || sudo nohup node index.js > output.log 2>error.log &
这一切都归结为相对路径
脚本在本地运行,因为我在正确的路径中运行了它。但当从其他地方运行时,它失败了。所以 cron 没有机会
简单的改变:
#!/bin/bash
cd /full/path/to
ps --no-headers -C node || sudo nohup node ./index.js >./output.log 2>./error.log &