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

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

#!/bin/bash

sh -c "sleep 60" &
exec sleep 120

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

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

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

Вопрос: как оторваться от первого сна и сделать pstree есть что-то вроде

 -sleep(11681)
 -sleep(11682)

2 ответа

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

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

Другие вопросы по тегам