1 )пароли :вы можете изменить загрузочный образ этих устройств и записать в него ключ на постоянной основе, поэтому вам никогда не нужно вводить пароль. посмотрите, возможно ли это... не уверен, какие устройства вы используете.
2 )поместите следующий код в ~/.ssh/config
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
это настроит вас.
Я решил это, хотя это может быть уродливо.
Вместо разрешения proxy.service Requires=server.service
я разрешаю использование proxy.service BindTo=server.service
. Таким образом, proxy.service правильно завершает работу, если server.service останавливается или дает сбой.
Теперь server.service все еще работал в состоянии loaded deactivating stop
, когда по какой-то причине не мог перезапуститься. Я допускаю сбой процесса после завершения скрипта с помощью exit 1
, поэтому server.service переходит в состояние loaded failed failed
.
Поскольку proxy.service по-прежнему требуется server.service, он перезапускается, и все работает, как задумано.
server.service
относится к разновидности Type=simple
(по умолчанию, если указано ExecStart=
).
Относительно его ExecStop=
есть интересный момент в документации
Note that the commands specified in ExecStop= are only executed when the service started successfully first. They are not invoked if the service was never started at all, or in case its start-up failed, for example because any of the commands specified in ExecStart=, ExecStartPre= or ExecStartPost= failed (and weren't prefixed with "-", see above) or timed out... Also note that the stop operation is always performed if the service started successfully, even if the processes in the service terminated on their own or were killed. The stop commands must be prepared to deal with that case.
Из вашего вопроса следует, что server.service
завершается "само по себе" (, скорее, через отправку контента через FIFO ). systemd увидит это и вызовет ExecStop
. Это может быть связано с выполнением дополнительных операций FIFO, которые зависают, вызывая «деактивацию».
Вы должны убедиться, что команды ExecStart
и ExecStop
завершаются с нулевым статусом и не зависают, чтобы systemd зарегистрировал службу как неактивную.