Напишите службу модуля systemd для запуска приложения с другими аргументами после нечистого выхода.

Экранирование для строк оболочки — сложная задача. Попробуйте:

bind '"\es":"ssh -t localhost  \"echo \\\"hi\\\"; echo \\\"bye\\\"\""'

После выполнения вышеуказанной команды нажатие клавиши Esc -должно привести к следующему тексту в командной строке:

ssh -t localhost  "echo \"hi\"; echo \"bye\""

Это будет работать правильно. При выполнении он выдает результат:

hi
bye
Connection to localhost closed.

Проблема заключалась в том, что \\"интерпретируется как одиночная обратная косая черта, за которой следует активная двойная -кавычка оболочки -. Вам нужно экранировать двойную кавычку -, чтобы она была неактивной. Таким образом \\\".

1
04.09.2019, 14:03
1 ответ

Не уверен, что существует простое решение (, поэтому, возможно, стоит подумать о запуске приложений по умолчанию в подробном режиме ).

Вот предложение, которое делает хотя бы часть того, что вы хотите.Сервисный модуль, показанный ниже, запускает приложение в обычном режиме (или ExecStart=), если приложение работает нормально. Если по какой-либо причине приложение не запускается, служба запускает вторую попытку (ExecStopPost=)в подробном режиме.

[Unit]
Description=verbose-start-on-failure Service
After=app.service

[Service]
RemainAfterExit=yes
ExecStart=/home/pi/exampleApp
ExecStopPost=/home/pi/exampleApp -V

[Install]
WantedBy=app.service

Однако, если приложение запущено успешно, но по какой-то причине позже происходит сбой, этот сервисный модуль не перезапустит его автоматически (добавление PartOf=зависимости не сработает ).

0
28.01.2020, 00:01

Теги

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