Я написал два сценария оболочки a.sh
и b.sh
. У меня a.sh
и у b.sh
меня есть бесконечный цикл for, и они выводят какой-то вывод на терминал. Я хочу написать другой сценарий, который вызывает оба a.sh
и, b.sh
но я хочу, чтобы пользователь немедленно восстановил контроль над терминалом, вместо того, чтобы сценарий запускался бесконечно, и я хочу скрыть вывод в терминале.
linux
scripting
sh
background-process
Бехнам Сафари
источник
источник
nohup /path/to/your/script.sh parameter1 > & 1 &
Если кто-нибудь знает лучший способ./dev/null 2>&1
если вы используете,nohup
поскольку он уже автоматически добавляет все потоки STDOUT и STDERR в файл nohup.out. Используйте только:nohup /path/to/your/command &
-bash: syntax error near unexpected token '&'
Перенаправьте вывод в такой файл:
Это перенаправит как stdout, так и stderr в один и тот же файл. Если вы хотите перенаправить stdout и stderr в два разных файла, используйте это:
Вы можете использовать
/dev/null
как один или оба файла, если вас не интересуют stdout и / или stderr.Подробную информацию о перенаправлениях см. На странице руководства bash .
источник
Извините, это немного поздно, но мы нашли идеальное решение для некоторых команд, где вам не нужен стандартный вывод или вывод ошибок (кредит, где он должен: http://felixmilea.com/2014/12/running-bash-commands-background -правильно / )
Это перенаправляет вывод на null и сохраняет экран чистым:
источник
Если они находятся в том же каталоге, что и ваш скрипт, содержащий:
В
&
конце - это то, что заставляет ваш скрипт работать в фоновом режиме.Эта
> /dev/null 2>&1
часть не обязательна - она перенаправляет потоки stdout и stderr, поэтому вам не нужно видеть их на терминале, что вы, возможно, захотите сделать для шумных скриптов с большим количеством вывода.источник
Запустите подоболочку, чтобы удалить уведомления и закрыть STDOUT и STDERR:
источник
[1] + 54765 done <emacs>
благодарностиЕсли вы хотите запустить скрипт в кикстарте Linux, вам нужно запустить его, как показано ниже.
источник
источник
-x
делать?Эти примеры работают нормально:
nohup sh prog.sh proglog.log 2> & 1 &
Для цикла вы можете использовать это так:
для i в {1..10}; делать sh prog.sh; сон 1; готово prog.log 2> & 1 &
Он работает в фоновом режиме и не показывает никаких результатов.
источник