systemd user service doesn't autorun on user login

vadim_shb asked:

I have Debian Jessie and connect to it by ssh. I want to autostart shell command on user login by systemd.

I’ve create a simple systemd service ~/.config/systemd/user/foo.service witch contains:

Description=Systemd autostart test

ExecStart=/bin/sh -c "echo 123 >> /home/user/there;"


I’ve enable it by systemctl

systemctl --user enable foo

I’ve created success message container

touch ~/there

and after reboot and login (by ssh) ~/there file is empty.

When I use it manually

systemctl --user restart foo

it works.

What am I missing?

My answer:

By default, users cannot set services to run at boot time. The admin must enable this on an individual basis for each user.

sudo loginctl enable-linger <username>

From the documentation:

Enable/disable user lingering for one or more users. If enabled for a specific user, a user manager is spawned for the user at boot and kept around after logouts. This allows users who are not logged in to run long-running services. Takes one or more user names or numeric UIDs as argument. If no argument is specified, enables/disables lingering for the user of the session of the caller.

View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.