Например, когда я печатаю ping 8.8.8.8 &
, почему мы можем видеть работающий процесс ping? И когда я печатаю find / -name '*test*' &
, это также видно на мониторе.
Почему это? Разве это не в фоновом режиме?
&
предписывает оболочке запускать команду в фоновом режиме, т.е. она разветвляется и запускается в отдельной суб-оболочке, как задание, асинхронно.
Обратите внимание, что когда вы помещаете и
, вывод - и stdout, и stderr - по-прежнему будет напечатан на экране . Если вы не хотите видеть какой-либо вывод на экране, перенаправьте оба stdout
и stderr
в файл с помощью:
myscript > ~/myscript.log 2>&1 &
Обычно вы можете отказаться от stderr
, перенаправив его на / dev / null
, если вы не беспокоитесь об анализе ошибок позже.
Вы также можете запускать команды / сценарии одновременно в отдельных суб-оболочках. Например,
./script1 & ./script2 & ./script3 &
Фоновое задание может быть возвращено в командную строку до его завершения с помощью команды:
fg <job-number>
номер задания
можно получить, запустив
jobs
При использовании и
процесс выполняется в фоновом режиме. Но его стандартный вывод по-прежнему - терминал.
Фактически, вы можете запустить ping 8.8.8.8 &
и find / -name '* test *' &
одновременно (в результате получается смешанный вывод), но вы не можете запускать ping 8.8.8.8
и find / -name '* test *'
одновременно в одной оболочке.
] Если вы не хотите ничего видеть, используйте что-нибудь вроде ping 8.8.8.8 &> / dev / null &
.
Кроме того, вы можете узнать о nohup
и отклонить
.
libavcodec-ffmpeg.so.56.60.100
(для меня на гостеприимном), по-видимому, кодеры, которые Вы упоминаете, так или иначе " housed" в единственном отличии (не метаданные) регистрируют тот в lintian/overrides
папка? У Вас есть цитата для этой информации?
– pbhj
11 November 2016 в 11:02
Я хотел попробовать и ответить конкретно, что часть:
Почему это?
POSIX Реализация управления заданиями, выбрать для прикрепления Stdout, STDERR на родительский терминал [1]. Я подозреваю, что это был выбор по умолчанию исторически, возможно, поскольку раньше был только один физический терминал и никаких эмуляторов в тот день, и поэтому терминал был единственным выбором, в котором все работы могут писать вывод на (?)
и stdout / Похоже, что ERR довольно сложно вернуться, если вы создали терминал без программы, как экран, и ваш терминал, и оболочка в нем доступна или подвержена уменьшению, если вы закрыли свой SSH: HTTPS: // Superuser.com/Questions/50058/after-fte-fact-remote-nohup-with-tcsh/50077#50077 Хотя как ответ там указывает, он может быть сделан путем прикрепления GDB, если родительская оболочка отказалась от процесса Отказ Это также важная причина, по которой эмуляторы терминалов настолько полезны, потому что интерактивные процессы не могут в целом выжить без каждого получения свой собственный терминал ..
[1] https://www.gnu.org/software/libc/manual/html_node/ Access-To-Terminal.HTML