在 CentOS 7 上使用 cron 作业的 nohup 节点服务

在 CentOS 7 上使用 cron 作业的 nohup 节点服务

我想nohup node service在 CentOS 7 上使用 cron 作业运行。 为此,我创建了一个/home/guest/start_indexjs如下文件:

#!/bin/bash

if pgrep -f "index.js" >/dev/null; then
echo "index.js is Running."
else
echo "index.js is Stopped."
nohup node /root/demo/index.js > /root/index-nohup.log &
fi

我登录ssh root并运行以下命令:

cd /home/guest/
chown root start_indexjs
chgrp -R root start_indexjs
chmod +x start_indexjs

/home/guest/start_indexjs我每分钟都想跑步。为此,我将以下行添加到/etc/crontab

*/1 * * * * root /home/guest/start_indexjs > /var/log/start_indexjs.log

/var/log/start_indexjs.log使用以下权限创建:

-rwxrwxr-x  1 root   root    179 Aug 12 12:31 start_indexjs

然后我crond使用以下命令重新启动服务

systemctl restart crond.service

毕竟,我的 cron 作业正在运行,但是当/home/guest/start_indexjs > /var/log/start_indexjs.log运行时,在 cron 作业中,我的index.js没有运行。index.js使用以下命令没有正在运行的进程:

ps -ef | grep index.js

答案1

  • 为了运行脚本,crond您必须提供所有二进制文件的完整路径,在您当前的情况 pgrepnode
  • nohup没有必要。crond运行脚本而不分配终端。

相关内容