我想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
您必须提供所有二进制文件的完整路径,在您当前的情况pgrep
下node
nohup
没有必要。crond
运行脚本而不分配终端。