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:
[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
I’ve enable it by systemctl
systemctl --user enable foo
I’ve created success message container
and after reboot and login (by ssh)
~/there file is empty.
When I use it manually
systemctl --user restart foo
What am I missing?
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.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.