Я запускаю задание 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 &
Протестируйте и проверьте, соответствует ли он вашим потребностям.