我想创建一个继续运行的shell脚本来检查我的两个轻量级Web服务器是否仍在运行,如果没有,则重新启动它们。
我可以使用命令pgrep -f thin
来获取名为thin
的服务器的pids数组(?)。
当这个返回的数组的计数为零时,我想运行一个启动两个服务器的命令:
cd [path_to_app] && bundle exec thin -C app_config.yml start
pgrep -f thin
返回正在运行的服务器的所有pid。例如:
23542 23425
我是shell脚本的新手,并且不知道如何将pgrep-f thin
的结果存储在数组中。如,
#!/bin/sh
while true
do
arr=$(pgrep -f thin) # /edited and now THIS WORKS!
#Then I want to check the length of the array and when it is empty run the above
#command, e.g.,
if [ ${#arr[@]} == 0 ]; then
cd [path_to_app] && bundle exec thin -C app_config.yml start
fi
#wait a bit before checking again
sleep 30
done
我遇到的第一个问题是我无法将pgrep
值存储在数组中,而且我不确定是否可以检查零值。之后我不确定其他代码是否有问题。我希望有人可以帮助我!
答案 0 :(得分:2)
您忘了执行命令:
arr=($(pgrep -f thin))
[...]空的时候
如果您只检查空白,可以直接使用grep
的退出状态。
-q, --quiet, --silent Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected.