Привет. Убил несколько часов. А всё потому, что ожидал поведения - новый юзерский системд экземпляр - начинаем с чистого листа для пользовательских юнитов. Т.е. если есть юнит:
$ cat ~/.config/systemd/user/my_check_mail.service
[Unit]
Description=Check Mail Service
[Service]
Type=oneshot
ExecStart=sh -c "echo 'tick' >> /tmp/212"
[Install]
WantedBy=default.target
$ ~/.config/systemd/user $ systemctl --user get-default
default.target
$ systemctl --user list-dependencies default.target
default.target
● ├─my_check_mail.service
● └─basic.target
● ├─paths.target
● ├─sockets.target
● │ ├─dbus.socket
● │ ├─dirmngr.socket
● │ ├─gpg-agent-browser.socket
● │ ├─gpg-agent-extra.socket
● │ ├─gpg-agent-ssh.socket
● │ ├─gpg-agent.socket
● │ └─p11-kit-server.socket
● └─timers.target
● └─my_check_mail.timer
После enable юнита и выхода из логин шеллов (тупо в getty) с последующим логином в юзера (т.е. происходит запуск юзерского системд), это не приводит к запуску моего сервиса my_check_mail.service, он стартует только после перезагрузки. Такое поведение явилось для меня очень странным и неожиданным. Можно ли настроить сервис так, чтобы он начинал все заново при перезапуске пользовательского инстанса (т.е. системный не перезагружается)? Можно ли настроить весь системд так, чтобы это условие соблюдалось для всех сервисов (т.е. любые состояние не переживал перезагрузку экземпляра с пид != 1)? Речь лишь о юзерских юнитов, т.к. перезагрузка системного инстанса == перезагрузке системы, естественно.