Откройте терминал, выполняющий команду, если systemd сервис перестал работать

У меня есть пользовательский systemd сервис. Иногда это перестало работать, потому что я должен повторно создать свой ssh ключ. Сообщение об ошибке следующие:

unison.service - Unison Sync
   Loaded: loaded (/etc/systemd/system/unison.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2019-10-07 09:14:25 IST; 884ms ago
  Process: 14607 ExecStart=/home/adamfg/bin/unison default (code=exited, status=3)
Main PID: 14607 (code=exited, status=3)

Когда эта ошибка происходит, я хочу, чтобы терминал открыл выполнение команды, требуемой повторно создавать mt ssh ключ, как я могу сделать это?

4
задан 11 October 2019 в 17:31

1 ответ

Во-первых, Ваш сервис должен быть пользовательским сервисом вместо этого. Системные службы не могут открыть терминал, чтобы сделать то, что Вы хотите. Если это должна быть системная служба, необходимо будет создать метод отправки себе уведомление при входе в систему так, чтобы можно было выполнить задачу и перезапустить сервис. Как пользовательский сервис, хотя, это будет работать, в то время как Вы зарегистрированы, и можно использовать следующий метод для раскрытий терминала, когда Вы входите в систему, если сервису не удается запуститься.

Ваш сервисный файл должен иметь PartOf=graphical-session.target в [Unit] раздел сервиса, и Restart=always в [Service] с Вашим ExecStart= указывая на сценарий оболочки, который работает

/home/adamfg/bin/unison default || gnome-terminal -e "bash -c 'genkey_command && exit 1'"

Или подобный. Это заставит Ваш сервис запускаться, когда Вы войдете в графическую сессию, и если это перестало работать, откройте терминал с genkey_command ожидание входа, но будет всегда выходить 1, заставляя сервис перезапустить после генерации нового ключа.

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

4
ответ дан 1 December 2019 в 09:43

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

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