mihalych
Недавно ставил arch на нетбук (впервые), заглянул в /etc/hosts и увидел запись 127.0.1.1 "имя машины", т. е. не нужно там как бы ничего дописывать, разрабы сами дописали. Но для систем, установленных очень давно, таки актуально.
А можно подробнее про "ставил"? Я ставил с месяц назад, и ничего такого в hosts у меня нет.
Natrio
akorop
Natrio
А просто sd[b-z]* чем не нравится?
Спасибо! Всем нравится, кроме того, что я не понимаю, как это работает. Ведь звёздочка - это повторение 0 и более раз, разве нет? То есть сюда вообще не должно подходить, скажем, sdb1. Но подходит. Это похоже на регэксп, но это явно не есть обычный регексп. Так что же это?
Но это уже теоретический вопрос, практическую проблему [b-z]* закрыло полностью. Но хочется понять.
RTFM, батенька, RTFM.
Это НЕ регэксп, а всего лишь старые добрые шаблоны имён, как в консоли.
? означает любой символ, * означает любое количество любых символов. Это НЕ модификаторы!
Виноват. Просто в man udev про shell-style pattern сказано не рядом с операциями сравнения, а гораздо ниже, в достаточно неожиданном месте, вот я и не дочитал...
Natrio
А просто sd[b-z]* чем не нравится?
Спасибо! Всем нравится, кроме того, что я не понимаю, как это работает. Ведь звёздочка - это повторение 0 и более раз, разве нет? То есть сюда вообще не должно подходить, скажем, sdb1. Но подходит. Это похоже на регэксп, но это явно не есть обычный регексп. Так что же это?
Но это уже теоретический вопрос, практическую проблему [b-z]* закрыло полностью. Но хочется понять.
Для автомонтирования флэшек у меня в /etc/udev/rules.d/ лежит правило, начинающееся так:
KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end"
Пока попадались флэшки, разбитые как диск (то есть с partition table), всё было нормально. Но вот подключил электронную книгу - а там два "диска", с файловыми системами прямо на диске. То есть монтировать надо, скажем, не sdb1, а прямо sdb. Добавил звёздочку после [0-9]. В grep оно работает, а тут - нет. Вот как это выглядит, когда подключена электронная книга (sdb, sdc) и обычная флэшка (sdd):
[[email protected] rules.d]# cat 12-media-by-label-auto-mount.rules | head -n 1
KERNEL!="sd[b-z][0-9]*", GOTO="media_by_label_auto_mount_end"
[[email protected] rules.d]# lsblk --output NAME,TYPE,FSTYPE,LABEL,MOUNTPOINT | grep "sd[b-z][0-9]*"
sdb     disk vfat
sdc     disk vfat   AZBOOKA-SD
sdd     disk
└─sdd1  part vfat   AK-4G      /media/AK-4G
То есть sdd1 смонтировалась, а sdb, sdc - нет. Тут что, какие-то особые регулярнае выражения? И что же надо написать, чтобы монтировались sdb, sdb1, sdb11?
frankyboy
akorop, если я правильно понял, то речь идёт о команде hostnamectl для применения/изменения hostname?
Я первый раз услышал об этой команде. Покурил man, попробовал, и не увидел, чем она может помочь. Из видимых изменений от её выполенния - только коррекция файла hostname. Ни в hosts, ни в nsswitch.conf ничего не меняется. И, соответственно, тормоза в описанной ситуции - в полном объёме.
vadik
akorop, в /etc/hostname имя хоста было (правильное)?

П.С.Вики привел к английскому варианту.
... который неправильный:
Note: Редактировать /etc/hosts нет необходимости.
Необходимость вообще говоря, есть. Или, как альтернатива, есть необходимость редактировать /etc/nsswitch.conf.
kurych
vadik
akorop, сделайте еще один эксперимент. Приведите /etc/hosts к старому виду, а в /etc/nsswitch.conf, найдите строку hosts: files dns myhostname и замените myhostname на свое реальное имя хоста. Результат какой?
Не стоит. myhostname в данном случае - это ключевое слово. Другое дело, что в ситуации, которую описывает ТС, его надо переместить перед dns или вообще впереди, сразу после двоеточия. Иначе таймауты ожидания dns все равно останутся.
UPD: а как все это работает, можно протестировать командой из man nss-myhostname
getent ahosts `hostname`
Вернул hosts к старому виду, без своего хоста, - тормоза восстановились.
Обновил систему - тормоза остались.
Переставил myhostname в начало (hosts: myhostname files dns) - тормоза исчезли. А, кстати, почему у этой строки "из коробки" не такой вид? То, что myhostname стоит в конце списка, это для чего-то ещё нужно, кроме генерации торомозов? (Для сравнения: в ubuntu вообще нет myhostname в nsswitch.conf, так что у нас всё круто и динамично, только тормозит.)
Итак, выходит, есть аж два решения: ручная правка hosts или ручная же правка nsswitch.conf. Хрен редьки не слаще.
Кстатит, о самой проблеме. Повторяю, тормоза возникали у меня и при использовании ModemManager, в период времени, когда модем уже соединился с компьютером, но ещё не соединился с интернетом. Это вполне жизненная ситуация. Думаю, всякие wlan-ы тоже могут порождать такие ситупции.
И уж точно, я далеко не первый, кто про тормоза при запуске mc спрашивает. А вот работающий ответ получен, похоже, впервые. Вписать бы его куда-нибудь... Задержка на 20 секунд при запуске mc достаёт очень, даже если бывает редко. Так что, может, всё-таки надо багрепортить?
vadik
akorop, в /etc/hostname имя хоста было (правильное)?
Да.
kurych
2akorop: Не совсем согласен. Ubuntu вообще для домохозяек, поэтому там как можно более универсально делают. И какими-то хитрыми костылями все завязывают. Не знаю, как сейчас, но раньше там даже Firefox переходил в автономный режим, если не был доступен интернет. (Меня это изрядно доставало).
Просто в Вашем случае из-за статики сеть иногда находится не совсем в адекватном состоянии. Поэтому нужна такая поправка. То есть, если человек не пользуется менеджерами сети, а настраивает все руками и статикой, то предполагается, что он знает, что делает.
Хм... А что плохого может быть от ресолвинга своего хоста в 127.0.0.1? Кроме того, цитирую упомянутую статью Вики:
Note: Вам теперь не нужно больше редактировать /etc/hosts. Пакет nss-myhostname будет обеспечивать разрешение имен, и устанавливается на все системы по умолчанию
Только пакета такого нет, но есть о нём какое-то упоминание в systemd. "В лоб" запустить его не получается, а разбираться совершенно неохота. Отредактировать руками hosts проще, чем его запустить, даже если бы он запускался.
Так что, похоже, и в Арче имя хоста должно было бы автоматом вписываться, да только не работает это. Надо барепортить?
[[email protected] etc]# pacman -Ss nss-myhostname
core/systemd 198-1 [установлен]
    system and service manager
[[email protected] etc]# systemctl status nss-myhostname
nss-myhostname.service
	  Loaded: error (Reason: No such file or directory)
	  Active: inactive (dead)
[[email protected] etc]# systemctl start nss-myhostname
Failed to issue method call: Unit nss-myhostname.service failed to load: No such file or directory. See system logs and 'systemctl status nss-myhostname.service' for details.
[[email protected] etc]# systemctl enable nss-myhostname
Failed to issue method call: No such file or directory
kurych
akorop
hosts я не трогал
Вот и причина тормозов. Добавьте в этом файле строчку для разрешения доменного имени Вашего компьютера. Или в строчке 127.0.0.1 в конце - имя компа.
Помогло, спасибо! Это именно оно. И с Убунту разница именно в этом - там "из коробки" есть имя хоста в hosts.
Это бы в FAQ какой-то надо. Наверняка ведь не только mc на этом может обламываться. А ещё лучше бы, чтобы "из коробки" имя хоста было в hosts...