У меня есть сценарий, который запускает другой сценарий в фоновом режиме, а затем завершает его. Я ожидал, что дочерний скрипт исчезнет, но, в конце концов, ему все же удается напечатать некоторый результат. Вот пример:Как делаются процессы с & (в bash) и убивают их?
в сценарий one.sh:
echo "this is one"
./two.sh &
sleep 1
pid=$!
kill $pid
echo "this was one"
в сценарий two.sh:
echo "this is two"
./three.sh
echo "this was two"
в сценарий three.sh:
echo "this is three"
sleep 5
echo "this was three"
я побежал ./one.sh, который должен запускать two.sh в фоновом режиме, который, в свою очередь, запускает three.sh, но не в фоновом режиме! Выход получают:
this is one
this is two
this is three
this was one
this was three
Если не «это три» не появляется на выходе, так как three.sh не побежали в фоновом режиме и two.sh останавливал one.sh? Не могли бы вы также указать мне на любую документацию, описывающую, как процессы ведут себя, когда (не) в фоновом режиме и что происходит, когда они прекращаются?
Большое спасибо за вашу помощь!
Процесс init не убивает ребенка; он просто собирает статистику от трупа (зомби), чтобы зомби не накапливались без ограничений. –
Спасибо, я отредактировал ответ – kamjagin