Команда терминала с sudo выполняется долго.

Вопрос или проблема

Я заметил, что терминал недавно стал очень медленным, когда я выполняю команду, требующую моего пароля. Проходит несколько секунд, прежде чем отображается [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, которые могут мешать процессу аутентификации или влиять на скорость выполнения команд.

Пример

Чтобы исправить данную проблему, выполните следующие шаги:

  1. Проверка имени хоста:
    Используйте команду hostname в терминале, чтобы узнать текущее имя вашего хоста.

  2. Редактирование файла hosts:
    Откройте файл /etc/hosts с правами суперпользователя. Это можно сделать с помощью текстового редактора, например, nano или vim. Используйте команду:

    sudo nano /etc/hosts
  3. Добавление имени хоста:
    Внесите изменения в файл, добавив строку формата:

    127.0.0.1 ваш_имя_хоста

    Если в вашем файле уже есть строка с 127.0.1.1, убедитесь, что она также соответствует текущему имени вашего хоста.

  4. Проверка и отключение ненужных сервисов:
    Некоторые службы, не используемые в вашем окружении, могут вызывать дополнительные задержки. Чтобы их проверить, воспользуйтесь командой:

    sudo service --status-all

    Найдите и отключите ненужные сервисы командой:

    sudo systemctl disable имя_сервиса

    К примеру, для winbind и smbd:

    sudo systemctl disable winbind smbd

Применение

Понимание и корректировка конфигурации вашего файла /etc/hosts, а также управление ненужными сервисами может значительно улучшить время отклика ваших команд с sudo. Эти изменения могут показаться незначительными, но их влияние на производительность системы может быть ощутимо, особенно в тех случаях, когда такие команды используются часто.

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

Таким образом, своевременное обновление файла /etc/hosts и отключение ненужных служб может обеспечить более быстрый и надежный отклик системы. Следование этим рекомендациям может существенно повысить производительность вашей работы в терминале и минимизировать возможные задержки при выполнении соответствующих команд.

Оцените материал
Добавить комментарий

Капча загружается...