$HOME
вказує на домашній каталог користувача, який виконує сценарій. Служби Systemd запускаються з root, тому це, ймовірно, буде намагатися /root/theFolder/run.sh
. Використовуйте абсолютні шляхи в сервісних файлах.
У вас також є forking
набір опцій. Це потрібно для програми, яка працює на сам фон, чи робить це ваш сценарій? Більшість це не так, і якщо ваше це не так, ви повинні вилучити цю опцію, або systemd буде чекати, коли ваш сценарій закінчить, і вимагатиме його як розпочатого.
Також системні файли сервісних служб, які вказують на сценарії у вашому домашньому каталозі, не перешкоджають, і, можливо, це стосується безпеки. Оскільки вони виконуються як root, кожен, хто може змінити їх, може потенційно отримати кореневий доступ до вашого комп'ютера. Набагато краще скопіювати скрипт /usr/local/bin
і переконатися, що він є власником і тільки в корінному режимі, щоб припинити це. Це також гарна ідея , щоб запустити сценарій як звичайний користувач , використовуючи User=
і Group=
опцію у файлі служби.
Якщо ви хочете запустити його як свого користувача, краще покласти службовий файл ~/.config/systemd/user/
і запустити / увімкнути його systemctl --user enable yourservice && systemctl --user start yourservice
(зауважте, запускайте так, як ваш користувач не має root). Дивіться це для отримання додаткової інформації про файли обслуговування користувачів.
systemctl daemon-reload
після створення свого одиничного файлу?