node.js - 从 CPanel Cron 作业运行节点服务器
问题描述
我有一个在 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
但没有任何改变。查看我写入的文本文件,该脚本肯定每小时都在运行,并且肯定会发现站点已关闭,但是当“重新启动服务器”字样写入文本文件时,服务器实际上并没有启动.
检查nohup.out
确认没有写入任何内容,这表明该命令以某种方式nohup /home/acc123/bin/pm2 start /home/acc123/bin/www &
运行不正确。
我难住了。有没有人见过类似的东西?
解决方案
找到了。看起来节点本身也不在 cron 作业的路径变量上。明确指定节点修复问题的位置。
推荐阅读
- java - 如何验证 graph.PartitionStrategy 是否有效?
- sql-server - 如何使用 vb.net 将 excel 文件导入 sql server
- modelica - 在 Modelica 模型中找出导致非线性误差的变量
- search - 如何在多层结构中规划一条既最短又最高奖励的路径?
- web3 - 如何将 web3 从 esm.sh 导入 deno ./deps.ts 文件?
- python - 绘制散点图图例不显示图例标题,但每种颜色都有 = 符号
- javascript - lottie-web 中的内存泄漏
- javascript - 如何将我的 BS-CS 和星星放在底部
- maven - maven 包含来自程序集的依赖项
- reactjs - 在 reactjs 中显示 PDF 文件