Назад | Перейти на главную страницу

Пользовательская служба systemd не запускается автоматически при входе пользователя в систему

У меня есть Debian Jessie и я подключаюсь к нему по ssh. Я хочу, чтобы команда оболочки автоматически запускалась при входе пользователя в систему с помощью systemd.

Я создал простую службу systemd ~/.config/systemd/user/foo.service ведьма содержит:

[Unit]
Description=Systemd autostart test
Wants=local-fs.target
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo 123 >> /home/user/there;"

[Install]
WantedBy=multi-user.target

Я включил его с помощью systemctl

systemctl --user enable foo

Я создал контейнер сообщения об успехе

touch ~/there

и после перезагрузки и входа в систему (по ssh) ~/there файл пуст.

Когда я использую его вручную

systemctl --user restart foo

оно работает.

Что мне не хватает?

По умолчанию пользователи не могут настроить запуск пользовательских служб во время загрузки. Администратор должен включать это индивидуально для каждого пользователя.

sudo loginctl enable-linger <username>

Из документация:

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

Вам также необходимо установить правильную цель для WantedBy = как объяснил Клименти в другой ответ. В multi-user.target не существует для пользовательских сервисов; по умолчанию есть только default.target.

[Install]
WantedBy=default.target

Попробуй это

[Install]    
WantedBy=default.target