检查程序是否正常运行的脚本

检查程序是否正常运行的脚本

我有两个 Python 程序在两个不同的屏幕上运行。在第三个屏幕上,我想运行一个脚本来检查这两个 Python 程序是否正在运行以及它们是否运行正常(也许检查控制台输出以确定输出是否符合预期)。如何使用 shell 脚本执行此类操作?

#!/bin/sh

program1="$(ps -ef | grep '[p]ython my_program1.py' | awk '{print $2}')"
program2="$(ps -ef | grep '[p]ython my_program2.py' | awk '{print $2}')"

if [ "${program1}" != "" ]
then
        echo "Program1 is running"
else
        echo "Program1 is not running"
fi

if [ "${program2}" != "" ]
then
        echo "Program2 is running"
else
        echo "Program2  is not running"
fi

这就是我现在所拥有的。我认为这不是最好的方法,但对我来说应该没问题。如果进程正在运行,program1 和 program2 中是进程的 PID。我如何从它们那里获取实时输出以检查行是否包含给定的值?

答案1

将脚本重定向stdout到文件,例如:

my_program1.py > /tmp/log.1

然后在您的脚本中阅读log.1以查看它是否应该如此。

如果您希望在脚本运行的终端上看到脚本输出,则可以使用 而不是将输出重定向到文件tee

my_program1.py | tee /tmp/log.1

相关内容