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
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?
Best Answer
By default, users cannot set user services to run at boot time. The admin must enable this on an individual basis for each user.
From the documentation:
You also need to set the correct target for WantedBy= as Climenty explained in another answer. The
multi-user.target
does not exist for user services; by default there is onlydefault.target
.