Мне нужен файл .sh, который будет отображать 0, если мой сервис python не запущен. Я знаю, что pgrep - это команда, которую я хочу использовать, но я получаю ошибки при ее использовании.

if [ [ ! $(pgrep -f service.py) ] ]; then
    echo 0
fi

Это то, что я нашел в Интернете, и я продолжаю получать ошибку

./test_if_running.sh: line 3: syntax error near unexpected token `fi'
./test_if_running.sh: line 3: `fi;'

Когда я печатаю

./test_if_running.sh
1
BaleineBleue 29 Май 2017 в 07:40

2 ответа

Лучший ответ

Это немного просто, но почему бы просто не напечатать код выхода NOT , например:

! pgrep -f service.py &> /dev/null ; echo $?

В качестве бонуса будет напечатано 1, если служба запущена.

3
agc 29 Май 2017 в 04:58

Проблема в вашем коде - вложенная [ ... ]. Также, как заметил @agc, нам нужно проверить код выхода pgrep, а не его вывод. Итак, правильный способ написать if:

if ! pgrep -f service.py &> /dev/null 2>&1; then
  # service.py is not running
fi
2
codeforester 29 Май 2017 в 05:12