创建和执行简单的 cron 作业时出现问题

问题描述 投票:0回答:1

我知道 cron 应该是“坚如磐石”、可靠的等等。但我似乎无法正确完成一项简单的工作设置

我做了什么?

  • 我创建了一个 bash 脚本并使其对每个人都可执行
    chmod a+x scriptname.sh
  • 我通过手动执行来测试它。它检查某个进程是否正在运行,并在必要时重新启动它。有效
  • 我检查了 cron 正在运行
    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 raspberry-pi4
1个回答
0
投票

这一切都归结为相对路径

脚本在本地运行,因为我在正确的路径中运行了它。但当从其他地方运行时,它失败了。所以 cron 没有机会

简单的改变:

#!/bin/bash
cd /full/path/to
ps --no-headers -C node || sudo nohup node ./index.js >./output.log 2>./error.log &
© www.soinside.com 2019 - 2024. All rights reserved.