加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何使用shell脚本来监督程序?

发布时间:2020-12-15 23:35:44 所属栏目:大数据 来源:网络整理
导读:我已经四处寻找,但还没有找到我正在寻找的东西.简而言之,我创建了一个bash脚本,在无限循环中运行,睡眠并检查进程是否正在运行.唯一的问题是即使进程正在运行,也表示它不是并打开另一个实例. 我知道我应该按进程名称检查而不是进程ID,因为另一个进程可以跳入
我已经四处寻找,但还没有找到我正在寻找的东西.简而言之,我创建了一个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 restartedn"
  perl program_name.pl &
  sleep 5
  read -r pid < "${filename}_pid.txt"
 fi

done

解决方法

摆脱方括号.它应该是:

if ps -p $pid; then

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

if test ps -p $pid; then

事实上,当我运行它时会产生“-bash:[: – p:二元运算符预期”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读