Назад | Перейти на главную страницу

запустить несколько экземпляров одного и того же скрипта php из bash

Я запускаю задание cron для выполнения файла php несколько раз в минуту, как это

*  *  *  *  * /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 10; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 20; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 30; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 40; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 50; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null

Это выполняет myFile.php хорошо, но когда я подсчитываю количество запущенных процессов
ps -ef | grep php | wc -l
Он складывается, и использование процессора достигает 100%!

Должен ли я запускать один файл bash, а из файла bash запускать несколько файлов php в шахматном порядке?

Если да, то как мне написать сценарий bash?

#!/bin/bash
????
????
????

редактировать: Хочу отметить, что исполнение файла должно происходить после завершения предыдущего исполнения.

Также задание cron не является обязательным, как указал krisFR

Я не знаю, что на самом деле делает ваш сценарий, возможно, он требует много ресурсов сервера, и наверняка следующий запускается раньше, чем предыдущий. Вы этого хотите? Я угадаю «нет».

Я бы посоветовал запустить сингл Bash скрипт, что-то вроде:

#!/bin/bash
while true; do
   /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
   sleep 10
done

Допустим, вы поместили приведенный выше код в файл /home/me/myscript.sh вы можете запустить его в фоновом режиме, используя:

nohup /home/me/myscript.sh &

Протестируйте и проверьте, соответствует ли он вашим потребностям.