lampslave
Если systemd-udev-settle.service у меня вообще не включается, то что у меня отвечает за обнаружение устройств?
Есть мысль, что udev теперь отрабатывает ещё до запуска остальных сервисов, в том числе и журнала. Раньше такого не было, вот и глючило всё.
Интересная мысль! (И вяжется с обновлением.. Кстати, сегодня уже до 193 обновился системд, дефолт [email protected] ведет себя хорошо..). ;-)
Arch awesome @各行其道@
lampslave
А мы его сначала прописали, потом (частично) удалили, потом решили узнать “а чо ета ваще такое” :)
И да, это классно сказано! ))
Arch awesome @各行其道@
В общем, я вот вас почитал, пошел читать маны на юнит. В конце концов, исходя из того, что писал мне lampslave
Wants=network.target
Before=network.target
After=systemd-udev-settle.service
Requires=systemd-udev-settle.service
, а также из манов:
Note that requirement dependencies do not influence the order in which services are started or stopped. This has to be configured independently with the After= or Before= options. If a unit foo.service requires a unit bar.service as configured with Requires= and no ordering is configured with After= or Before=, then both units will be started simultaneously and without any delay between them if foo.service is activated.
,- я понял, что, чтобы решить основную проблему, из-за которой началось это обсуждение
Проблема как раз в том, что никакого requires там изначально не было, и нам надо было просто правильно прописать, чтобы dhcpcd запускался после того, как udev найдёт все железки.
, по идее, действительно, нужно использовать связку After/Required.
Однако, ведь чуть раньше я (по совету) убирал Required и оставлял только After. И в таком состоянии юнита я решил проверить, как ведет себя systemd-udev-settle.service. Посмотрел в journalctl с помощью команды
journalctl _SYSTEMD_UNIT=systemd-udev-settle.service
и (к моему большому удивлению) обнаружил, что тот вообще не подавал никаких признаков жизни во время загрузки системы! Пусто! То есть, если у меня только афтер, то, как и написано в манах, мой юнит будет запускаться после только в том случае, если второй вообще будет запускаться. А если есть required, то второй юнит будет запущен насильно (и в таком случае он у меня не мертвый). Тогда у меня возникает вопрос: Если systemd-udev-settle.service у меня вообще не включается, то что у меня отвечает за обнаружение устройств? (Но это отдельный разговор).
Так вот, я подумал, а зачем мне тогда вообще что-то про него писать? И я вернулся к дефолту юнита:
[Unit]
Description=dhcpcd on %I
Wants=network.target
Before=network.target
, потом перезагрузился специально 10 раз, чтобы диагностировать прошлую проблему. А ее больше нет! Скорость загрузки была в среднем 14ms, только один раз - 25 ms.
Вот что это было?
Я могу только предположить, что все исправилось благодаря обновлению systemd до 192 вчера. Больше никак не могу объяснить. (Раньше то дефолт реально глючил!)
В общем, спасибо вам большое, благодаря вашей помощи немного в голове что-то стало складываться насчет юнитов и системд.
=)
Arch awesome @各行其道@
Сергей
Спасибо большое! Я не мог разобраться с файлами типа .service, а точнее что писать в содержимом. В в /etc/systemd/system/ файла tpfand.service не было. Ещё раз большое спасибо за простое разъяснение и за ссылку. Теперь, очень на это надеюсь, у меня нет проблем с добавлением модулей и демонов, хотя… Время покажет.
=)
Вот здесь написано о том, где находятся .service файлы: https://wiki.archlinux.org/index.php/Systemd#Analyzing_the_system_state (в конце этого пунктика). ;-)
Arch awesome @各行其道@
Хорошо, спасибо! Я еще почитаю внимательно и поэкспериментирую с записями этими. Потом напишу о результатах. =)
Arch awesome @各行其道@
lampslave
Короче говоря, надо просто изучить http://www.freedesktop.org/software/sys … .unit.html и всё должно разъясниться :)
Вот бы ещё на русском языке это найти…
Да, надо почитать. Ох уж эта новая systemd,- по мне, так очень интересно!
А у lampslave следующее сообщение будет 1000-ым! ))
Arch awesome @各行其道@
Я именно так поменял. И стало гораздо лучше. Хорошая пища для размышлений. ))
Arch awesome @各行其道@
Понял.. Спасибо большое!
Arch awesome @各行其道@
lampslave
Я заранее извиняюсь за скорее всего нубский вопрос, просто мне сейчас не особо хочется читать английскую документацию по написанию юнитов, а на родном языке я её пока не видел. Или я плохо смотрел?

Так вот, а если изменить зависимости вот таким образом, будет всё работать или нет?

[Unit]
Description=dhcpcd on %I
Before=network.target
After=systemd-udev-settle.service
И всё, без wants и requires.
Опа! Все работает и гораздо быстрее и каждый раз!
[[email protected] ~]$ systemd-analyze
Startup finished in 4337ms (kernel) + 10248ms (userspace) = 14586ms
Чудеса! Возникает вопрос, почему systemd-udev-settle.service мертвый?
[[email protected] ~]$ systemctl status systemd-udev-settle.service
systemd-udev-settle.service - udev Wait for Complete Device Initialization
	  Loaded: loaded (/usr/lib/systemd/system/systemd-udev-settle.service; disabled)
	  Active: inactive (dead)
	    Docs: man:udev(7)
	          man:systemd-udevd.service(8)
	  CGroup: name=systemd:/system/systemd-udev-settle.service
Очень интересно! И я запутался..
Arch awesome @各行其道@
Ok, сейчас попробую.. ))
Arch awesome @各行其道@