用于检查脚本的脚本是否正在运行并启动它,如果它已停止

时间:2017-04-07 20:13:54

标签: linux bash shell sh

我有一个名为的脚本:Run.sh

我使用此命令运行此脚本:

./run.sh

我不想停止此脚本,但此脚本突然停止,需要再次运行。

我需要一个脚本来检查它,如果我的run.sh停止了,再次运行它。

这是run.sh代码:

#!/usr/bin/env bash


install() {
        sudo apt-get update
        sudo apt-get upgrade
}

if [ "$1" = "install" ]; then
  install
  else

if [ ! -f ./tg/tgcli ]; then
    echo "tg not found"
    echo "Run $0 install"
    exit 1
 fi

   #sudo service redis-server restart
   #./tg/tgcli -s ./bot/bot.lua -l 1 -E $@
   ./tg/tgcli -s ./bot/bot.lua $@
fi

如果我的服务器重启

,我想在启动时运行此脚本(使用screen或tmux)

我有Ubuntu 16.04版本

谢谢Ljm Dullaart

你能帮我这个吗?

2 个答案:

答案 0 :(得分:0)

您可以检查run.sh是否正在运行,如果使用单个命令停止,则重新运行它:

$ if ! pgrep run.sh ;then /path/to/run.sh;fi

如果脚本运行,pgrep将返回退出状态0 =成功并将打印run.sh的pid 如果脚本没有运行,pgrep将返回退出状态1,然后将调用脚本。

您还可以使用pgrep inst.sh >/dev/null来"静音"案例脚本运行时的pgrep。

答案 1 :(得分:0)

您不需要再次运行完整的bash脚本。改变

./tg/tgcli -s ./bot/bot.lua $@

while :; do
   ./tg/tgcli -s ./bot/bot.lua $@
done

每次退出时都会重启bot.lua。