通过 cron 启动 Node.js 会默默失败

通过 cron 启动 Node.js 会默默失败

我目前正在尝试设置一个 cronjob,只要该服务器关闭,该 cronjob 就会启动该服务器。

为此,我编写了一个简单的脚本来测试和启动节点服务器。

#!/bin/bash

ts=$(date +%T)

if pgrep -f "node"
then
    echo $ts": node running"
else
    echo $ts": node not running"
    '/usr/bin/node' '/home/pi/project/serveronly/index.js' > '/home/pi/project/node.log'
fi

对应的crontab是:

m   h   dom   mon   dow   command
*   *    *     *     *    /home/pi/project/sanity_check.sh >> /home/pi/project/cron.log 2&>1

我的日志记录显示以下内容: 如果我只是启动脚本,它将启动服务器并正确记录 node.js 输出。

对于由 cron 启动的脚本,它看起来是这样的:如果node.js当前正在运行一个实例,它将检测到并相应地记录。如果没有检测到,它将正确登录cron.log,但不会登录任何内容node.log,也不会启动服务器。

答案1

  1. 您没有提供完整路径/home/pi/project/serveronly/index.js- 您缺少最初的正斜杠,因此节点程序无法找到您的脚本。

  2. 命令成功覆盖主目录下的文件,home/pi/project/node.log;大概这就是你的意思project.log。如果你想附加对于该日志,使用两个大于号,而不是一个。

我会用这个来代替:

/usr/bin/node /home/pi/project/serveronly/index.js >> /home/pi/project/node.log

相关内容