Вопрос или проблема
Я заметил, что терминал недавно стал очень медленным, когда я выполняю команду, требующую моего пароля. Проходит несколько секунд, прежде чем отображается [sudo] password for …
Я использую Dell XPS developer edition (i7, 8G RAM) с Ubuntu 13.04 64bit.
Привет, я нашел этот ответ на другой вопрос – Проблема в том, что ваше имя хоста не в вашем файле hosts.
В принципе, введите “hostname” в вашем терминале. Это покажет, как называется ваш хост.
Затем введите:
sudo nano /etc/hosts
и добавьте:
127.0.0.1 yourhostname
затем сохраните – и вы закончили! Sudo теперь должно работать быстро!
Когда вы меняете имя вашей системы в Gnome (Часть, отображаемая в терминале после @; например, tobias@laptop
на tobias@newlaptop
), возможно, вам нужно обновить ваш /etc/hosts
:
127.0.1.1 laptop
нужно изменить на
127.0.1.1 newlaptop
Если вы все сделали правильно, sudo
должно работать без задержки сразу после сохранения этой настройки.
Ответ 1
Подтвердил ответ @Paul Preibisch для тех, кто хочет более детализированный ответ
У меня была эта проблема долгое время, и все, что я сделал, это запустил
hostnamectl | grep -i "static hostname"
это покажет вам ваше имя хоста, затем скопируйте значение и отредактируйте ваш hosts
sudo vim /etc/hosts
и добавьте 127.0.0.1 вашХост
туда
также в некоторых дистрибутивах 127.0.1.1 вашХост
должно быть заменено
Ответ 2
Обратите внимание, что в большинстве случаев ответ 1
решит вашу проблему, если он не решит, вам нужно проверить ваш лог sudo
, который в дистрибутивах, основанных на debian, находится по адресу
/var/log/auth.log
так что вы можете отслеживать ваш sudo лог с помощью команды tail
sudo tail -f -n 100 /var/log/auth.log
затем откройте другой терминал и запустите команду sudo, например:
sudo ls /
вернитесь к вашему первому терминалу и прочитайте лог, в моем случае проблема была вызвана отказом аутентификации pam_krb5
, лог был:
sudo: pam_krb5(sudo:auth): authentication failure;
после того, как я удалил его, команда sudo работала мгновенно…
Спасибо @gdm за подсказку…
Для ленивых – Просто скопируйте это в ваш терминал 🙂
echo -e '127.0.0.1\t' $(hostnamectl | grep -i "static hostname:" | cut -f2- -d:) | sudo tee -a /etc/hosts
sudo должно быть быстрее после выполнения этой команды
Редактировать – Объяснение этой команды более подробно:
-
Она сначала получает ваше localhost, удаляя строку лейбла впереди (hostnamectl | grep -i “static hostname:” | cut -f2- -d:) например, mylocalhost
-
Она соединяет его с 127.0.0.1 впереди (“\t” означает символ табуляции)
-
Она берет полную строку, созданную выше (127.0.0.1 mylocalhost) и добавляет ее в конец /etc/hosts (вам нужен sudo для редактирования файла hosts)
Я сражался с этой проблемой несколько недель, пробуя всевозможные решения, найденные в интернете, которые в основном указывали на файл /etc/hosts, безуспешно.
Вчера я решил пройти через это снова и, пока занимался этим, отключил все ненужные мне службы (использую Debian) и отключил “winbind” и “smbd”, которые в моем случае были бесполезны.
эта проблема теперь ИСЧЕЗЛА.
Шаги:
sudo service --status-all
[...]
[ + ] smbd
[ + ] winbind
[...]
$ sudo systemctl disable winbind smbd
$ sudo service winbind status
○ winbind.service - Samba Winbind Daemon
Loaded: loaded (/usr/lib/systemd/system/winbind.service; отключено; preset: включено)
Active: inactive (неактивно)
Docs: man:winbindd(8)
man:samba(7)
man:smb.conf(5)
$ sudo service --status-all
[...]
[ - ] smbd
[ - ] winbind
[...]
Надеюсь, это поможет!
Ответ или решение
Когда вы замечаете задержки при выполнении команд с sudo в терминале, это может быть связано с несколькими факторами. Одной из наиболее частых причин является некорректная конфигурация файла hosts вашего компьютера. Давайте рассмотрим теоретическую основу, примеры и применение этого решения.
Теория
Когда вы используете команду sudo
, система требует аутентификации через ввод пароля. В этот момент система может попытаться разрешить имя хоста, чтобы записать событие аутентификации в логи. Если имя хоста вашего компьютера не прописано или неверно указано в файле /etc/hosts
, это может привести к задержкам, поскольку система пытается связаться с DNS-сервером для разрешения имени, что вполне может занять несколько секунд.
В дополнение к этому, задержку могут вызывать неправильно сконфигурированные или ненужные сервисы, такие как winbind
или smbd
, которые могут мешать процессу аутентификации или влиять на скорость выполнения команд.
Пример
Чтобы исправить данную проблему, выполните следующие шаги:
-
Проверка имени хоста:
Используйте командуhostname
в терминале, чтобы узнать текущее имя вашего хоста. -
Редактирование файла hosts:
Откройте файл/etc/hosts
с правами суперпользователя. Это можно сделать с помощью текстового редактора, например, nano или vim. Используйте команду:sudo nano /etc/hosts
-
Добавление имени хоста:
Внесите изменения в файл, добавив строку формата:127.0.0.1 ваш_имя_хоста
Если в вашем файле уже есть строка с
127.0.1.1
, убедитесь, что она также соответствует текущему имени вашего хоста. -
Проверка и отключение ненужных сервисов:
Некоторые службы, не используемые в вашем окружении, могут вызывать дополнительные задержки. Чтобы их проверить, воспользуйтесь командой:sudo service --status-all
Найдите и отключите ненужные сервисы командой:
sudo systemctl disable имя_сервиса
К примеру, для
winbind
иsmbd
:sudo systemctl disable winbind smbd
Применение
Понимание и корректировка конфигурации вашего файла /etc/hosts
, а также управление ненужными сервисами может значительно улучшить время отклика ваших команд с sudo
. Эти изменения могут показаться незначительными, но их влияние на производительность системы может быть ощутимо, особенно в тех случаях, когда такие команды используются часто.
Этот совет может быть особенно полезен, если вы используете специфические пакетные менеджеры или программы, которые обращаются к сети, так как корректная конфигурация позволяет избежать ненужных задержек в процессе аутентификации.
Таким образом, своевременное обновление файла /etc/hosts
и отключение ненужных служб может обеспечить более быстрый и надежный отклик системы. Следование этим рекомендациям может существенно повысить производительность вашей работы в терминале и минимизировать возможные задержки при выполнении соответствующих команд.