读作: 从bash中检测(如果特定的node.js脚本正在运行).
我有一个服务器在某些操作和某些cron间隔上运行特定的node.js脚本.
该脚本可能需要几个小时才能完成,但不应该同时运行多次.
是否有一种方法sh或bash检测如果特定的脚本已经运行?
简单地运行(if)pidof node将不起作用,因为可能有其他不相关的节点脚本在运行.
我能想到的最接近的半解决方案是touch /tmp/nodescript.lock,只有在脚本不存在时才运行.但显然/tmp没有(总是)在服务器崩溃/重启时得到清理.
也许还有其他一些我不知道的简单方法.也许我可以为进程提供某种静态标识符,当进程发生时它就消失了.有任何想法吗?
当您使用nodejs调用脚本时,它将显示在进程列表中,例如:
user 773 68.5 7.5 701904 77448 pts/0 Rl+ 09:49 0:01 nodejs scriptname.js
所以你可以ps用一个简单的bash脚本检查它的存在:
#!/bin/bash
NAME="scriptname.js" # nodejs script's name here
RUN=`pgrep -f $NAME`
if [ "$RUN" == "" ]; then
echo "Script is not running"
else
echo "Script is running"
fi
Run Code Online (Sandbox Code Playgroud)
根据您的需要进行调整并放入cron.
| 归档时间: |
|
| 查看次数: |
2245 次 |
| 最近记录: |