Как определить, работает ли команда или не от удара

Я хочу повторно выполнить файл php каждый раз, когда он заканчивается...

Затем я создал, я регистрирую SH как это

VAR_1=1;

while [[ $VAR_1 != "2" ]]; do

    for filename in *.php; do

        if [ -- check if command is NOT running -- ]; then
            sleep .5
            php $filename
        fi

    done
done

Какой, ЕСЛИ я должен использовать?

0
задан 2 March 2019 в 09:21

2 ответа

использовать pgrep

if ! pgrep -f "php $filename"; then echo "command not running"; fi

Однако "Я хочу повторно выполнить файл php каждый раз, когда он заканчивается", итак, почему не делают Вас, просто делают это:

while true; do
    php "$filename"
done

Затем Вы не должны искать его, когда это закончится, это будет просто работать снова.

2
ответ дан 26 October 2019 в 03:10
( readlink /proc/*/exe | grep -q '/path/to/the/command' )

Возвратится 0, если процесс будет работать /path/to/the/command.

Однако канонический способ сделать это несколько отличается:

  • На запуске процесс проверяет если некоторый известный файл (обычно /run/$commandname.pid) существует
  • Если так, это читает PID в нем и проверку, если упомянутый процесс все еще работает (например, существует a /proc/$pid/ каталог)
  • Если да, это выходит
  • Иначе (никакой файл PID или процесс, больше не работающий), это пишет свой собственный PID в файле и запускается.
0
ответ дан 26 October 2019 в 03:10

Другие вопросы по тегам:

Похожие вопросы: