gpt4 book ai didi

perl - 如何使用shell脚本来监督一个程序?

转载 作者:行者123 更新时间:2023-11-29 09:01:27 25 4
gpt4 key购买 nike

我四处搜索,但还没有完全找到我要找的东西。简而言之,我创建了一个 bash 脚本以在无限循环中运行,休眠并检查进程是否正在运行。唯一的问题是即使该进程正在运行,它也会说它没有运行并打开另一个实例。

我知道我应该通过进程名称而不是进程 ID 检查,因为另一个进程可能会跳入并获取 ID。然而,所有 perl 程序在我的系统上都被命名为 Perl5.10.0,我打算打开同一个 perl 程序的多个实例。

下面的“if”总是返回false,我这里做错了什么???

while true; do

if [ ps -p $pid ]; then
echo "Program running fine"
sleep 10

else
echo "Program being restarted\n"
perl program_name.pl &
sleep 5
read -r pid < "${filename}_pid.txt"
fi

done

最佳答案

去掉方括号。应该是:

if ps -p $pid; then

方括号是test 命令的语法糖。这是一个完全不同的野兽,根本不调用 ps:

if test ps -p $pid; then

事实上,当我运行它时会产生“-bash: [: -p: binary operator expected”。

关于perl - 如何使用shell脚本来监督一个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com