У меня есть машина Fedora 23.
У меня есть скрипт bash для синхронизации каталогов / файлов, который синхронизирует мой локальный / домашний каталог с удаленным каталогом (на компьютере NAS). Я запускаю его вручную, но я хотел бы создать службу systemd и сделать ее более гибкой, поскольку другие люди используют мой компьютер со своими учетными данными пользователя, я хотел бы знать, когда пользователь вошел в систему, и впоследствии запустить мою службу.
Могу ли я что-то сделать из системного файла моей службы, или мне нужно будет это проверить из своего кода в скрипте?
Мне нужно только убедиться, что у меня есть доступ к переменным среды (например, $ USER) и запустить его как сервис.
Моим основным источником документации является эта ссылка https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html
systemctl --user
на F23?76 loaded units listed
..bashrc
при входе в систему, затем он прослушивает сигнал выхода из системы Gnome и выключается.Ответы:
Использование systemd уже включает поддержку пользовательских сессий, фактически вы уже должны зависеть от этого (невольно).
Создать сервисный каталог
Создать редактировать файл сервиса (vim, gedit, geany - все, что вы хотите)
Примерно так должно выглядеть, если это постоянный сервис.
Но это звучит так, как будто вы хотите запустить его один раз, а затем хорошо с этим справиться, поэтому лучше использовать конфигурацию с одним снимком, подобную этой:
Это, конечно, предполагает, что ваш скрипт исполняемый, то есть:
В противном случае вам необходимо указать путь к соответствующему интерпретатору:
Теперь перезагрузите systemd (и заново войдите в систему для тестирования)
Если вам нужна дополнительная информация, обратитесь к Arch-Wiki, например. В этой ветке аскубунту есть разные идеи, в том числе и моя.
Вы можете распространить поведение (если вы являетесь пользователем root) на других пользователей, определив сервис глобально. Для этого вам нужно создать файл службы в / usr / share / systemd / user /, а не в $ HOME / .local / share / systemd / user .
источник
Я знаю это несколько лет, но ответ от беспокойства просто помог мне. Так что, я думаю, это все еще полезно. Кроме того, это скорее комментарий, но у меня нет этой привилегии, поэтому я публикую его как «ответ». Во всяком случае...
Запустив Linux Mint 19, я не смог «включить» службу, когда скрипт находился в «$ HOME / .local / share / systemd / user». Попытка сделать это всегда приводила к ошибке. Однако я мог бы запустить его из каталога $ HOME / .local / share / systemd / user. После перемещения скрипта в / usr / share / systemd / user / systemd разрешил мне включить его без проблем.
источник