我是脚本/ 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
它启动脚本,但如果出现错误则无法终止/重启。
我错过了什么?
感谢您的帮助!
答案 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