2014-12-08 87 views
0

我的shell脚本在启动时会打印分段错误。bash shell脚本显示分段错误

watchdog.sh:

#!/bin/bash 
while true 
do 
    processCnt=`ps ax | grep $1 | grep -v grep | grep -v watchdog | wc -l` 
    if [ $processCnt -lt 1 ]; then 
     $1 
    fi 
    sleep 2 
done 

脚本得到一个程序名作为参数。
我还在run.sh中同时运行这个脚本4次,并使用不同的参数。

run.sh:

./watchdog.sh hqservicedemon & 
./watchdog.sh relayservicedemon & 
./watchdog.sh rtspservicedemon & 
./watchdog.sh httpcontrolservicedemon & 

当我运行run.sh我得到错误:

./watchdog.sh: line xx: 7316 segmentation fault (core dumped) 

一些测试运行中只运行一个watchdog.sh时,它看起来像确定后。 SH。
我在做什么错误的shell脚本?
谢谢你的任何建议。

编辑: 我的恶魔有问题,而不是脚本。修复恶魔后,脚本运行良好。

+1

考虑使用[pgrep](http://linux.die.net/man/1/pgrep)而不是通过'grep'管道化'ps'。 – 2014-12-08 07:26:26

回答

4

它可能是你的恶魔之一是seg错误而不是脚本。它发现恶魔没有运行,执行它(也许没有适当的参数?)和seg故障。 尝试运行四个

现在已经有很多工具可以让这些事情保持活跃,而无需编写新的脚本来管理它。如果你使用的是一个暴发户的系统,你可以很容易地与暴发户做到这一点。其他系统有类似的方法来做到这一点,我不会从头开始写它。

+0

感谢您的快速回复。我会检查我的恶魔和暴发户的工具。 – 2014-12-09 00:45:45

+0

最后,我发现我的恶魔有问题,而不是脚本。 – 2014-12-10 02:50:09

+0

听起来像一个正确的答案标记即将发布:) – Born2Code 2014-12-10 04:21:28