我目前正在尝试设置一个 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
您没有提供完整路径
/home/pi/project/serveronly/index.js
- 您缺少最初的正斜杠,因此节点程序无法找到您的脚本。命令是成功覆盖主目录下的文件,
home/pi/project/node.log
;大概这就是你的意思project.log
。如果你想附加对于该日志,使用两个大于号,而不是一个。
我会用这个来代替:
/usr/bin/node /home/pi/project/serveronly/index.js >> /home/pi/project/node.log