Для проверки запущенного процесса вы можете перечислить все запущенные процессы (с помощью ps), а затем отфильтровать тот, который вам нужен, с помощью grep:
ps aux | grep YOUR_PHP_COMMAND
Если вы хотите запустить команду только тогда, когда она не запущена, вы можете использовать следующий скрипт:
CMD="/bin/sleep 3" # replace it with your command
if ! ps x|grep -v grep|grep "$CMD"; then
$CMD
fi
ЗАМЕЧАНИЕ: Вы должны использовать 'grep -v grep', чтобы исключить grep-процесс из списка процессов.
Если вы хотите поместить его в CRON JOB, вы можете упаковать его в одну строку с помощью ';'
CMD="/bin/sleep 3" ; if ! ps aux|grep -v grep|grep "$CMD"; then $CMD ; fi
Помните, что CRON JOB хороши для планирования. Если Вы хотите только поддерживать программу в рабочем состоянии, то лучшим подходом будет бесконечный цикл, который запускает программу всякий раз, когда она заканчивается.
То, что вы хотите, это демон, а не работа CRON. Работа CRON - для выполнения чего-либо (или при загрузке), не для сохранения процесса вживую. Я рекомендую вам прочитать эту статью, а затем сделать что-то очень простое:
#!/bin/sh
while true
do
/my/script.php >> /var/log/my_script.log 2>&1
done