Предварительная установка debian по-прежнему запрашивает сетевую карту

Когда вы нажимаете Ctrl+C, то весь shell job (группа процессов) получает SIGINT, less перехватывает его, чтобы прервать поиск, но gunzip завершится. Чтобы избежать этого, вы можете сделать:

(trap '' INT; gunzip < file.gz) | less

так, чтобы gunzip игнорировал SIGINT, но учтите, что после этого вы больше не сможете прервать gunzip.

Для gunzip это, вероятно, нормально, поскольку все, что вам нужно сделать, это выйти из less, после чего gunzip умрет от SIGPIPE в следующий раз, когда будет что-то писать, но для приложений, которые просто зависают, не выводя ничего, это будет более проблематично (вы все еще сможете использовать Ctrl+Z для SIGTSTP или Ctrl+\ для SIGQUIT).

Также обратите внимание, что некоторые команды, такие как pv или ping, устанавливают свой собственный обработчик SIGINT, который отменит наш trap '' INT.

Вы можете создать функцию для экономии набора текста, например:

iless() {
  (trap '' INT; "$@") | less
}

iless gunzip < file.gz

Или:

noint() (trap '' INT; "$@")

noint gunzip < file.gz | less

Но обратите внимание, что для:

gunzip < file.gz | grep foo | less

вам придется написать:

noint gunzip < file.gz | notint grep foo | less

или:

noint eval 'gunzip < file.gz | grep foo' | less

или:

iless eval 'gunzip < file.gz | grep foo'

Альтернативой является использование подстановки процесса:

less -f <(gunzip < file.gz | grep foo)

или (правда, не в zsh):

less < <(gunzip < file.gz | grep foo)

В этих случаях оболочка не включает команды внутри подстановки процесса в группу процессов переднего плана (кроме второго случая для zsh). Их группа процессов остается такой же, как и у оболочки. Это означает, что они не получают SIGINT, когда вы нажимаете Ctrl+C.

Обратите внимание, что эти процессы также не будут затронуты Ctrl+Z или Ctrl+\.

Проверено в zsh, ksh93 и bash.

2
13.03.2019, 23:18
2 ответа

Единственный вариант, который я нашел, это удалить все, кроме одного, сетевые интерфейсы машины VirtualBox, тогда программа установки автоматически выберет этот.

0
27.01.2020, 22:27

Тьфу, разогреваю старые вещи. Но у меня была такая же проблема, и я нашел решение.

Проблема в том, что файл preseed загружается после d -i выполняет настройку сети (sic! ). Поэтому, когда вы дойдете до выбора интерфейса, предварительные ответы еще не известны.

Так что вам нужно добавить соответствующий интерфейс в командную строку ядра вот так:

auto=true priority=critical interface=enp0s8 url=http://host/path/to/preseed.cfg

interfaceявляется псевдонимом для netcfg/choose_interfaceТаким образом, вы можете (и должны )удалить все netcfg/записи из файла preseed.

2
18.05.2020, 14:31

Теги

Похожие вопросы