如何在 shell 脚本中指定要执行的命令,如节点 bnlserver.js
How can I specify a command to execute like node bnlserver.js in a shell script
正在尝试编写 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 脚本。我相信你们知道怎么做。
那么我该如何解决呢?感谢您的帮助。
像这样
#!/bin/sh
if ! ps -ef | grep -q "[b]nlserver[.]js"; then
node bnlserver.js
fi
语法有点简洁,但需要确保准确性。 grep -q
命令将测试匹配,并在第一个匹配时退出。模式 "[b]nlserver[.]js"
被设计成永远不会匹配 grep 搜索本身。
这可以在 pgrep
可用的平台上提高效率。
注意:感谢 Charles Duffy 对这段代码进行了实质性改进。然而,他的帮助并不认可这种方法——他更喜欢使用 supervise、forever 或 runit。
正在尝试编写 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 脚本。我相信你们知道怎么做。 那么我该如何解决呢?感谢您的帮助。
像这样
#!/bin/sh
if ! ps -ef | grep -q "[b]nlserver[.]js"; then
node bnlserver.js
fi
语法有点简洁,但需要确保准确性。 grep -q
命令将测试匹配,并在第一个匹配时退出。模式 "[b]nlserver[.]js"
被设计成永远不会匹配 grep 搜索本身。
这可以在 pgrep
可用的平台上提高效率。
注意:感谢 Charles Duffy 对这段代码进行了实质性改进。然而,他的帮助并不认可这种方法——他更喜欢使用 supervise、forever 或 runit。