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

Форк процесс внутри скрипта оболочки bash

У меня есть простой сценарий оболочки, например

#!/bin/bash

sh -c "sleep 60" &
exec sleep 120

При использовании pstree команда, я нашел что-то вроде

`-sleep(11681)---sleep(11682)

Первый сон связан с sh -c, поэтому даже если я выполняю этот сон в фоновом режиме, он теперь является родительским в моем execспится.

Вопрос: Как отделить первый сон и заставить pstree есть что-то вроде

 -sleep(11681)
 -sleep(11682)

спать 60 и спать 120 и ждать

Первый сон уже отошел. Что происходит, так это то, что sleep 60 является родительским элементом оболочки, в которой запущен сценарий, тогда exec заменяет эту оболочку на sleep 120, Так что ваши sleep 120 теперь родитель вашего sleep 60. Чтобы они были на одном уровне в pstree вывод, просто фон sleep 120 так же, как вы делаете sleep 60 вместо того execэто.