netselect -apt не может найти самый быстрый репозиторий в MX -Linux

sh -c 'command line'обычно используются такими вещами, как system("command line"), ssh host 'command line', viи !, cron, и вообще всем, что используется для интерпретации командной строки, так что это довольно важно сделать его максимально эффективным.

Разветвление требует больших затрат процессорного времени, памяти, выделенных файловых дескрипторов... Если процесс оболочки просто ожидает другого процесса перед выходом, это просто пустая трата ресурсов. Кроме того, это затрудняет правильное сообщение о статусе выхода отдельного процесса, который будет выполнять команду (, например, когда процесс будет убит ).

Многие оболочки обычно пытаются свести к минимуму количество ответвлений в качестве оптимизации. Даже не оптимизированные -оболочки, такие как bash, делают это в случаях sh -c cmdили (cmd in subshell). В отличие от ksh или zsh, он не делает этого в bash -c 'cmd > redir'илиbash -c 'cmd1; cmd2'(в подоболочках ). ksh93 — это процесс, который дальше всего избегает форков.

Бывают случаи, когда эту оптимизацию выполнить невозможно, например при выполнении:

sh < file

Где shнельзя пропустить разветвление для последней команды, потому что во время выполнения этой команды к сценарию может быть добавлен дополнительный текст. А для файлов, не доступных для поиска -, он не может обнаружить конец -файла -, поскольку это может означать слишком раннее чтение из файла.

или:

sh -c 'trap "echo Ouch" INT; cmd'

Где оболочке может потребоваться выполнить больше команд после выполнения «последней» команды.

0
05.06.2021, 06:14
2 ответа

Возможно, в MX Linux репозитории организованы по-другому, не уверен. В любом случае, у MX есть собственный инструмент MX Repo Manager, в котором есть кнопка для выбора самого быстрого репо.

0
28.07.2021, 11:26

Решение проблемы.(netselect-aptиспользуйте команду netselectдля проверки самого быстрого зеркала. См. /usr/bin/netselect-aptскрипт)

Вы можете вручную найти самое быстрое зеркало через netselect, передав хосты на netselect, оно вернет самое быстрое. Э,г:

netselect ftp.is.co.za debian.xtdv.net
687 ftp.is.co.za

Чтобы получить самое быстрое зеркало с помощью доступного зеркала Debian на зеркальных сайтах Debian по всему миру(около 360 зеркал ), используйте следующую команду:

curl https://www.debian.org/mirror/mirrors_full |\
awk 'BEGIN{FS="<tt>";RS="</tt>"}/Site/{print $2}' |xargs netselect

curlзахватит веб-страницу в формате html.

awkбудет фильтровать результаты, извлекая содержимое между <tt>и </tt>с использованием соответствияSite

xargsпередаст результаты в качестве аргументов в netselect.

Э,г:

curl https://www.debian.org/mirror/mirrors_full | awk 'BEGIN{FS="<tt>";RS="</tt>"}/Site/{print $2}' |xargs netselect
...
netselect: unknown host ftp2.cn.debian.org
165 debian.connesi.it

Вы должны получить другой результат, ближайшее зеркало зависит от вашего географического положения.

Затем отредактируйте свой sources.listс ближайшим зеркалом.

1
28.07.2021, 11:26

Теги

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