如何在shell脚本中指定要执行的命令,如节点bnlserver.js

时间:2015-01-06 01:00:13

标签: shell

尝试编写一个shell脚本作为cron作业运行,以确保bnlserver.js仍在运行,如果没有则重新启动。

我试过了:

#!/bin/sh

# this script checks to see if the "node bnlserver.js" program is running
# and restarts it if not

ps -ef | grep bnlserver.js

if [ $? -ne 0 ]
then
    node | bnlserver.js
fi

exit

它不起作用。我糟糕的shell脚本。我相信大家都知道怎么做。 那么我该如何解决呢?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

像这样的东西

#!/bin/sh
if ! ps -ef | grep -q "[b]nlserver[.]js"; then
    node bnlserver.js
fi

语法有点简洁,但要求准确性。 grep -q命令将测试匹配,并在第一次匹配时退出。模式"[b]nlserver[.]js"的设计是为了永远不会匹配grep搜索本身。

pgrep可用的平台上,这可以提高效率。

注意:感谢Charles Duffy对此代码的实质性改进。然而,他的协助并不支持这种做法 - 他更喜欢使用监督,永远或跑步。