Intereting Posts
Сохранять доказательства вторжения / удаленных исполняемых файлов? fglrx, вызывающий «исправление рекурсивной ошибки, но требуется перезагрузка» на гибридной графике Intel / AMD Почему X.Org не многопоточен? Grub2 не видит мой второй жесткий диск Предельная скорость записи устройства Ошибка: обновление sudo apt-get Почему мой файл ~ / .bash_profile не работает? Перезагрузка без доступа к файловой системе и root через SSH Зачем прикасаться к созданию файла в / tmp, если максимальный размер файла ограничен нулевыми байтами? suse yast ничего не обеспечивает .so необходимо, строя из источника Является ли `open ()`, `mmap ()`, или нет, более фундаментальная функция? Переслать все порты VNC с помощью SSH Как разделить текст между разделителем на несколько файлов? Попытка использовать старый ПК для ПК для домашнего кинотеатра Могу ли я уведомить об отправке сообщения на другой монитор?

Выполнить команду без вывода терминала

Позвольте немного рассказать об этом вопросе. Я использую терминал newsboat RSS-ридер, который позволяет использовать macros для работы со ссылками. Например, у меня есть макрос, запускающий cd ~/videos && youtube-dl %u , который загружает видео с YouTube в ~/videos . Однако выходные данные youtube-dl будут распечатываться в моем терминале до тех пор, пока загрузка не будет завершена, и в течение этого времени я не могу продолжать пользоваться newsboat .

Мне интересно, как я мог бы сформулировать команду так, чтобы она выполнялась «где-то еще», чтобы я мог немедленно продолжить использовать терминал, из которого она запускается.

Если вам вообще не нужен вывод, перенаправьте его в / dev / null

 yourcommand > /dev/null 2>&1 

в противном случае вы можете перенаправить в файл:

 yourcommand > /somwhere/file 2>&1 

И когда вы запускаете команду из другого приложения и хотите немедленно использовать программу чтения новостей, вы можете запустить ее в фоновом режиме. Я не уверен, как это работает в этой новостной лодке, но в оболочке вы можете отправлять программы в фоновый режим с помощью &

 yourcommand > /somwhere/file 2>&1 & 

Ваш вопрос начинает задавать одну вещь, но затем переходит к другой вещи.

Первое, о чем вы спрашиваете, это отбрасывание вывода. Это легко сделать с помощью перенаправления:

 $ echo hello 1> /dev/null 2>&1 

Второе, о чем вы спрашиваете, – это запустить команду «где-то еще», чтобы вы могли продолжить использовать терминал. Это называется «Контроль работы».

Вы можете выполнить любую команду в фоновом режиме, используя разделитель команд & shell. Сравните поведение следующих двух команд:

 $ sleep 5 $ sleep 5 & 

Если задание уже запущено, и вам нужно использовать терминал для других целей, и вы хотите, чтобы задание было завершено, вы можете использовать CtrlZ, чтобы приостановить задание, и bg чтобы он продолжал в фоновом режиме:

 $ (sleep 10; echo hello) ^Z [1]+ Stopped ( sleep 10; echo hello ) $ bg [1]+ ( sleep 10; echo hello ) & $ echo farewell farewell $ fg ( sleep 10; echo hello ) hello 

Эта ссылка имеет довольно хорошее прочтение о контроле за работой с bash .

Для тихого запуска команды в фоновом режиме, которая «выживет», даже если терминал впоследствии будет закрыт, используйте screen в отдельном режиме:

 screen -dm your_command(-s) 

подключить screen с помощью команды execute

 screen -r 

Чтобы отсоединить подключенный экран, нажмите CTRL+A+D

Без screen вы должны выполнить команду с nohup , поэтому процесс будет запущен, если терминал будет закрыт, как, например, утилита screen :

 nohup your_command(-s) &>/dev/null &