Всем привет. Прошу дать ответ на этот странный для меня момент.
Есть некий скрипт script.php
Запускаем его от простого пользователя
php /var/www/script.php
Далее выполняем команду
ps -ef | grep -v grep | grep "/var/www/script.php"
userName 32253 32155 1 13:46 pts/2 00:00:00 php /var/www/script.php
убиваем все процессы
sudo killall php -9
Теперь запускаем этот же скрипт от рута
sudo php /var/www/script.php
Снова выполняем
ps -ef | grep -v grep | grep "/var/www/script.php"
И уже видим вот что
root 32631 32155 0 13:49 pts/2 00:00:00 sudo php /var/www/script.php
root 32632 32631 1 13:49 pts/2 00:00:00 sudo php /var/www/script.php
Почему выдаётся что запущено два процесса?
В случае если поставить данный скрипт в крон от рута
sudo crontab -e
* * * * * php /var/www/script.php
Команда
ps -ef | grep -v grep | grep "/var/www/script.php"
Выдаёт вот что
root 699 687 0 13:53 ? 00:00:00 /bin/sh -c php /var/www/script.php
root 700 699 0 13:53 ? 00:00:00 php /var/www/script.php
Вопрос возник после вот этого. Файл script.php задан в кроне на выполенние каждую минуту, и что бы не плодить дублей в самом файле выполняется комадна
if( ( $countPR = ( int ) exec( 'ps -ef | grep -v grep | grep "' . __FILE__ . '" | wc -l' ) ) > 1 ){
echo 'Proccess (' . $countPR . ')' . PHP_EOL;
die();
}
И получается при запуске от рута всегда находит 2 процесса файла, при запуске от простого юсера, находит только 1, т.е. сам себя же.