用于监视日志中“单词”的shell脚本,然后终止并重启进程

时间:2016-11-20 17:17:14

标签: python linux shell

我是脚本/ linux的新手。我一直在做一些研究,但现在我被卡住了。

我运行了一个python脚本,有时我收到错误(显示在终端窗口中)。

我需要: 1.将显示的内容放入日志或文本文件中, 2.监控该文件,当出现单词“331”时: 3.杀死script.py进程 4.重新启动它(保持这个循环,所以它会在每次出现“331”错误时终止并重启script.py。

在我的无知中,我这样做了:

#!/bin/sh
#execute the python script as a normal user and make a output.txt file so the grep command can find the "331" word

echo "Starting Script"
python main.py | tee output.txt

#using tail and grep to look for the "331" word:
if [ tail -f /path/to/script/output.txt | grep "331" ]; then
    echo "Error found. Killing Process"
    killall main.py
    echo "Restarting script..."
    ./startcap2.sh
fi
done

它启动脚本,但如果出现错误则无法终止/重启。

我错过了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果你只是grep这个过程本身,并使用head -n 1它会因为管道自动断开而被杀死:

#!/bin/sh

echo "Starting Script"
while true
do
python main.py | tee -a output.txt | grep "331" | head -n 1 # run until first line with 331 occurs
echo "Restarting script..."
done