Если Вы особенно не интересуетесь *, отклоняют реализации ядра стека TCP/IP, я рекомендовал бы смотреть на lwIP реализацию. Реализация является достаточно маленькой для схватывания без так большой проблемы, и она вполне прилично зарегистрировала.
Смотрите на блок-схему Rx и wikia веб-сайт.
SystemD
Услуги сеансов пользователей выполняются в полностью отдельном экземпляре Systemd
, и не имеет никакого способа зависеть от системных служб напрямую.
Есть и другие способы достичь того, что вы хотите, хотя. Самые чистые, вероятно, будут делать все, что вы хотите запустить, когда система собирается заснуть крючок в ингибиторах
ингибиторов , а затем запустить его как демон фона.
Более общее решение было бы иметь демон крючков в ингибиторах
, (см. Systemd-Lock-Handler и XSS-LOCK ,) И тогда, когда система будет спать, она активирует цель сеанса пользователя, которую вы можете заказать свои услуги под.
systemd --user
запускается как отдельный процесс отsystemd - system
процесс. Пользовательские единицы не могут ссылаться на системные единицы или зависеть от них.
В дополнение к ответу @kyrias, вот способ создать собственный уровень пользователя sleep.target:
~/.local/share/systemd/user/sleep.target
[Unit]
Description=User level sleep target
StopWhenUnneeded=yes
~/.local/bin/watch _сон
#!/bin/bash
dbus-monitor --system "type='signal',interface='org.freedesktop.login1.Manager',member=PrepareForSleep" | while read x; do
case "$x" in
*"boolean false"*) systemctl --user --no-block stop sleep.target;;
*"boolean true"*) systemctl --user --no-block start sleep.target;;
esac
done
~/.local/share/systemd/user/watch _sleep.service
[Unit]
Description=watch for sleep signal to start sleep.target
[Service]
ExecStart=%h/.local/bin/watch_sleep
Restart=on-failure
[Install]
WantedBy=default.target
См. сообщение в моем блогеhttps://medium.com/@aiguofer/systemd-sleep-target-for-user-level-10eb003b3bfd