Интересно, как shell выполняет этот код в файле .sh (например, test.sh):
while true
do
# check php process. If not running, run it.
cd $some_dir && php -f some_file.php &
# sleep 1s
done
Некоторые выходные данные:
ps -ef|grep test|grep -v grep
root 10963 3040 0 11:13 pts/19 00:00:00 /bin/bash ./test.sh start
root 10973 10963 0 11:13 pts/19 00:00:00 /bin/bash ./test.sh start
root 10975 10973 0 11:13 pts/19 00:00:00 php -f test_loop.php
В моем случае есть три процесса, в том числе 2 test.sh и 1 php.Но если использовать следующий код, то есть в две строки или круглые скобки, это нормально:
cd $some_dir && (php -f some_file.php &)
или
cd $some_dir
php -f some_file.php &
output:
ps -ef|grep test|grep -v grep
root 11112 3040 0 11:14 pts/19 00:00:00 /bin/bash ./test.sh start
root 11122 11112 0 11:14 pts/19 00:00:00 php -f test_loop.php
Inв этом случае два вида кодов выполняются в подоболочке, что мы и ожидаем.
В первом случае кажется, что между исходным процессом и процессом php существует промежуточный процесс.Так что же это и почему оно создано?