bash shell 脚本显示分段错误

Win*_*gha 0 linux bash shell

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

看门狗.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 Code Online (Sandbox Code Playgroud)

脚本获取程序名称作为参数。
我还在 run.sh 中同时使用不同的参数运行这个脚本 4 次。

运行.sh:

./watchdog.sh hqservicedemon &
./watchdog.sh relayservicedemon &
./watchdog.sh rtspservicedemon &
./watchdog.sh httpcontrolservicedemon &
Run Code Online (Sandbox Code Playgroud)

当我运行 run.sh 时出现错误:

./watchdog.sh: line xx:  7316 segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

经过一些测试,在 run.sh 中只运行一个 watchdog.sh 时看起来没问题。
我在 shell 脚本中做错了什么?
谢谢你的任何建议。

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

小智 5

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

已经有很多工具可以让这些东西保持活力,而无需您编写新的脚本来管理它们。如果您使用的是运行 upstart 的系统,则可以使用 upstart 轻松完成此操作。其他系统有类似的方法来做到这一点,我不会自己从头开始编写。