Чтобы запустить команду (кратковременно) 1 при запуске с помощью systemd, вы можете использовать unitd unit типа OneShot. Например, создайте /etc/systemd/system/foo.service, содержащий:
[Unit]
Description=Job that runs your user script
[Service]
ExecStart=/some/command
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Затем запустите:
sudo systemctl daemon-reload
sudo systemctl enable foo.service
По сути, это просто преобразование типичного задания Upstart в системный (см. Systemd for (!).
Вы можете запускать несколько команд из одного и того же файла службы, используя несколько строк ExecStart:
[Service]
ExecStart=/some/command
ExecStart=/another/command some args
ExecStart=-/a/third/command ignore failure
Команда всегда должна указываться с полным путем. Если какая-либо команда выходит из строя, остальные не запускаются. [[8]]
Релевантно:
Запись в Arch Wiki на systemd man 5 systemd.service Релевантно:Вместо сеансов пользователя вы можете создать блок systemd в ~/.config/systemd. Это должно работать с 16.04 и далее, но не более ранними версиями Ubuntu с systemd (так как они все еще использовали Upstart для пользовательских сеансов). Устройства сеанса пользователя можно управлять с помощью тех же команд, что и с системными службами, но с добавленной опцией --user:
systemctl --user daemon-reload
systemctl --user status foo.service
1 As против долгоживущих демонов.