从CPanel Cron作业运行节点服务器

时间:2019-04-04 15:42:00

标签: node.js cron cpanel pm2

我有一个运行在PM2上的Node.JS服务器,由于数据库限制,我的服务器偶尔会崩溃。

同时,我想我会尝试在cpanel中设置一个cron作业,以在服务器宕机时每小时重新启动它。

所以我写了一个如下的bash脚本:

#!/bin/bash

status_code=$(curl --write-out %{http_code} --silent --output /dev/null https://website.com/)

date >> cronlog.txt
if [[ "$status_code" -ne 200 ]] ; then
  pkill node
  nohup pm2 start bin/www &
  echo "Site status $status_code" >> cronlog.txt
  echo "Restarting Server" >> cronlog.txt
  exit
else
  echo "Site fine" >> cronlog.txt
  exit 0
fi

从SSH终端运行此程序效果很好;如果站点关闭,它将重新启动。

但是,一旦我在cpanel中设置了cron作业,如下所示:0 * * * * /home/acc123/fix.sh,查看cronlog.txt的输出,我看到该脚本肯定每小时运行一次,尝试重新启动该脚本。服务器-只是服务器没有重启。

一个初步的Google建议pm2不在cron作业运行的路径上,所以我修改了脚本,使其看起来像这样:

#!/bin/bash

status_code=$(curl --write-out %{http_code} --silent --output /dev/null https://website.com/)

date >> cronlog.txt
if [[ "$status_code" -ne 200 ]] ; then
  pkill node
  nohup /home/acc123/bin/pm2 start /home/acc123/bin/www &
  echo "Site status $status_code" >> cronlog.txt
  echo "Restarting Server" >> cronlog.txt
  exit
else
  echo "Site fine" >> cronlog.txt
  exit 0
fi

但是没有任何变化。查看我写入的文本文件,该脚本肯定每个小时运行一次,并且肯定是站点已关闭,但是当“ Restarting Server”一词写入该文本文件时,该服务器实际上并未启动

检查nohup.out确认没有写任何内容,这表明命令nohup /home/acc123/bin/pm2 start /home/acc123/bin/www &不能正确运行。

我很困惑。有人看过类似的东西吗?

1 个答案:

答案 0 :(得分:0)

找到了。看起来节点本身也不在cron作业的path变量上。明确指定问题所在的位置。