сам вызывая скрипт bash - PullRequest
4 голосов
/ 13 июня 2011

Мне нужно вызвать bash-скрипт сам по себе с другим набором аргументов, которые бы заставили его работать как фоновый процесс, поэтому я использую что-то вроде:

if [[ $a == $b  ]]
then
  $0 -v &> /dev/null
fi

Проблема в том, что хотя яя вызываю тот же сценарий в качестве фонового процесса, используя '&' в качестве суффикса и перенаправляя все выходные данные в / dev / null, терминал, который я вызываю сценарий, не освобождается, я предполагаю, что это из-за того, что сценарий, который был первоначально вызванпроцесс, который выполняется как процесс переднего плана, поэтому запрос состоит в том, как вызвать bash-скрипт сам по себе, чтобы при вызове самого себя процесс, отвечающий за запуск сценария в первый раз, был завершен, а консоль была освобождена, авторой вызов сам по себе работает как фоновый процесс?

Ответы [ 2 ]

13 голосов
/ 13 июня 2011

Вы не запускаете его как фоновый процесс, используя &.&> - это совершенно отдельный токен, который перенаправляет stdout и stderr одновременно.Если вы хотите поместить эту команду в фоновом режиме, это будет $0 -v &>/dev/null &.

4 голосов
/ 14 июня 2011

Попробуйте что-то вроде этого:

nohup $0 -v &

Команда nohup выполняет работу по отключению фонового задания и игнорированию сигналов, см. Справочную страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...