Ожидается ошибка двоичного оператора во время выполнения l oop in bash - PullRequest
0 голосов
/ 05 февраля 2020

TL: DR

Проверьте, работает ли заданный PID, если да, завершите процесс.

count=0
  while [[ "$count" -le 3 && ps -p $pid > /dev/null ]];
  do
   kill -9 $pid
   count=$(( $count + 1 )):
  done

В связи с этим я получаю сообщение об ошибке:

строка 8: [: -p: ожидается двоичный оператор

Я знаю, что есть несколько похожих вопросов, я уже пробовал их решения, но, похоже, они не работают.

1 Ответ

1 голос
/ 05 февраля 2020

while l oop является логически неправильным, как упоминал @kvantour. Вот сценарий. Обратите внимание, что он сообщит вам, если не смог завершить процесс, поэтому вы можете исследовать причину root. Скрипт получает PID в качестве первого аргумента (например, $./kill-pid.sh 1234). Обратите внимание, что это работает для bash ver. 4,1 +:

#!/usr/bin/env bash

if ps -p $1 > /dev/null

then
  output=$(kill -9 $1 2>&1)
    if [ $? -ne 0 ]
    then
      echo "Process $1 cannot be killed. Reason:"
      echo "$output"
# This line is added per OP request, to try to re-run the kill command if it failed for the first time.
#      kill -9 $1
    fi
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...