Рейтинг:0

Невозможно запустить сценарий оболочки в качестве службы systemd

флаг hk

У меня есть небольшой скрипт для преобразования миди-заметок в мультимедийные функции (увеличение громкости, следующая песня и т. д.). Это выглядит так:

#!/бин/баш
aseqdump -p "CMD MM-1" | \
в то время как IFS = "," читать src ev1 ev2 ch метка1 данные1 метка2 данные2 отдых; делать
    case "$ev1 $ev2 $data1" в
        "Примечание на 32" ) xdotool ключ XF86AudioRaiseVolume ;;
        "Примечание на 31") xdotool ключ XF86AudioLowerVolume ;;
        "Примечание на 51" ) xdotool ключ XF86AudioMute ;;
        "Примечание на 28" ) ключ xdotool XF86AudioPrev ;;
        "Примечание 29" ) xdotool ключ XF86AudioNext ;;
        "Примечание на 50" ) ключ xdotool XF86AudioPlay ;;
    эсак
сделано

Я могу запустить его из терминала, и он не может получать команды, пока я не нажму ctrl+c. Все идет нормально. Мой вопрос в том, как я могу использовать этот скрипт в качестве службы, чтобы мне не приходилось беспокоиться о том, что он находится в видимом терминале и работает при перезагрузке?

У меня есть служебный файл в /etc/системд/система/ со следующим содержанием:

[Ед. изм]
Description=Мой сценарий оболочки для синхронизации

[Оказание услуг]
ExecStart=/bin/bash /usr/bin/midi2keys.sh

[Установить]
WantedBy=многопользовательская.цель
bac0n avatar
флаг cn
Я считаю, что вы должны запустить свою службу как пользовательскую службу вместо `/etc/systemd/user`, а затем `systemctl --user enable ...`
Рейтинг:0
флаг in

Чтобы пережить перезагрузку, вы должны сохранить свой скрипт в

компакт-диск /опт/системд/ тогда sudo chmod a+x YOURSCRIPTFILENAME

затем создайте службу, например

sudo touch /etc/systemd/system/ИМЯ_ВАШЕЙ_СЛУЖБЫ.service

Затем отредактируйте файл, набрав sudo nano /etc/systemd/system/ИМЯ_ВАШЕЙ_СЛУЖБЫ.service а затем введите:

[Ед. изм]
Description=Мой сценарий оболочки для синхронизации

[Оказание услуг]
ExecStart=/bin/bash /usr/bin/midi2keys.sh

[Установить]
WantedBy=многопользовательская.цель

затем Ctrl + X для выхода, Y для сохранения и ввода для записи файла.

Теперь, чтобы установить службу и убедиться, что она загружается во время загрузки, введите:

systemctl демон-перезагрузка
systemctl включить YOURSERVICENAME.service

перезагрузите машину.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.