Служба автозапуска Systemd

Я недавно установил FreeFileSync на свой ПК и сумел заставить RealTimeSync работать отлично. Все, что осталось сделать, это автоматически вызвать скрипт при запуске. Сначала я использовал Cron с параметром @reboot, но это не сработало. Поэтому я решил использовать systemd. Я создал файл службы пользователя с именем sync.service, который я включил и прекрасно работает при вызове вручную с помощью команды systemctl --user start sync_1. Тем не менее, он сталкивается с ошибками при запуске. Кто-нибудь может, пожалуйста? Я не уверен, в чем я ошибаюсь.

[Unit]
After=network.service

[Service]
Environment="DISPLAY=:0"
ExecStart=/home/user/Desktop/sync.sh

[Install]
WantedBy=default.target

Ниже приведена ошибка, с которой я сталкиваюсь при проверке состояния файла systemd после запуска.

sync_1.service Loaded: загружено (/ etc / xdg / systemd / user / sync_1.service; включено; предустановка поставщика: включена) Активна: не выполнена (Результат: код выхода) с Sun 2020-06-14 21:19:19 BST; 47 с. Назад Процесс: 1859 ExecStart = / home / user / Desktop / sync.sh (код = выход, статус = 255 / ИСКЛЮЧЕНИЕ) Основной PID: 1859 (код = выход, статус = 255 / ИСКЛЮЧЕНИЕ)

1
задан 16 June 2020 в 19:12

1 ответ

Хорошо, после много взад-вперед в комментариях, Я считаю, что нашел правильный способ найти настройки:

Это описано в https://wiki.ubuntu.com/Keybindings

Чтобы найти все (системные) привязки клавиш:

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

gsettings list-recursively org.gnome.desktop.wm.keybindings; gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys; gsettings list-recursively org.gnome.settings-daemon.plugins.power

Чтобы найти специальный ключ, вы должны передать вывод каждой команды через grep -i <то, что вы ищете> ( флаг -i должен игнорировать регистр букв), поэтому, если вы ищете print, он будет выглядеть так:

gsettings list-recursively org.gnome.desktop.wm.keybindings | grep -i print; gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys | grep -i print; gsettings list-recursively org.gnome.settings-daemon.plugins.power | grep -i print

с некоторой магией bash, это явно может выглядеть лучше - но это работает;)

Относительно пользовательских ярлыков

Пользовательские ярлыки

Пользовательские ярлыки хранятся в dconf с использованием «перемещаемой схемы». имя схемы "Org.gnome.settings-daemon.plugins.media-keys.custom-KeyBinding". каждый Пользовательская привязка ключа имеет три свойства: имя, команда и привязка. Из-за перемещаемой схемы труднее использовать «gsettings» с пользовательскими ярлыками. Вот пример получения имени Первая пользовательская привязка клавиш:

gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom0 / name

Обратите внимание, что последняя часть custom0 / относится к первой привязке ключа пользовательского набора.

С помощью следующей команды gsettings list-recursively org.gnome.settings-daemon.plugins.media -keys.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom0 / вы получите что-то вроде:

org.gnome.settings-daemon.plugins Команда .media-keys.custom-keybinding 'LibreOffice' org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name 'LibreOffice' org.gnome.settings-daemon.plugins.media-keys.custom-keybinding 'l'

Чтобы найти правильную запись, вам может потребоваться увеличить число в custom0 .

Чтобы изменить, например, команду, используйте:

gsettings get org.gnome.settings-daemon. plugins.media-keys.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom0 / command '<ваша команда>'

Это также будет работать для имени или привязка .

Чтобы «очистить» пользовательскую привязку ключа, вы можете использовать: gsettings сбросить-рекурсивно org.gnome.settings-daemon.plugins.media-keys.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom0 / - это очистило бы записи внутри, но в Gnome-Settings все еще будет существовать как пустая запись, но они «деактивированы», вроде того.

Как это работает с gsettings - второй вопрос: Посмотрите здесь: https://developer.gnome.org/gio/stable/GSettings.html

Спокойной ночи и удачи! ;)

X-сервер не запускается во время запуска системы, но только после того, как вы выполните вход в систему с графическим интерфейсом.

Итак, когда /home/user/Desktop/sync.sh во время запуска системы пытается поговорите с обработкой X-сервера DISPLAY: = 0 , NO-сервера НЕТ, и все очень хорошо взрывается.

Запуск зависимых от X-сервера задач должен выполняться с помощью .desktop файл в $ HOME / .config / autostart / . Прочитайте man desktop-file-edit desktop-file-validate . Найдите примеры с locate .desktop . Прочтите «Спецификация записи рабочего стола» https://freedesktop.org/wiki/Specifications/desktop-entry-spec/

0
ответ дан 19 June 2020 в 21:23

Другие вопросы по тегам:

Похожие вопросы: