Как я могу самостоятельно обновить и перезапустить приложение Go?Linux

Ответить
Anonymous
 Как я могу самостоятельно обновить и перезапустить приложение Go?

Сообщение Anonymous »

У меня есть приложение Go (назовем его A), в обязанности которого входит следующее:
  • Получить для себя последнее обновление.
  • Если доступна новая версия, обновите ее и перезапустите.
  • Загрузите файл и извлеките его (для простоты)
Это приложение запускается с помощью сценария оболочки (скажем, S), такого как ./A, и идея состоит в том, чтобы разместить всю эту логику внутри самого A.
Я использую go-selfupdate(https://github.com/sanbornm/go-selfupdate) для самостоятельного обновления, но он не делает ничего для перезапуска приложения (сложная часть, лол). Я вижу CloudFlare tableflip(https://pkg.go.dev/github.com/cloudflar ... ion-readme), который можно использовать для приложений, обслуживающих http, для плавного перезапуска, но A не является одним из них.Другой подход, который я видел, заключался в том, чтобы заставить A выполнить exec.Command("A") и выйти, по сути, порождая новый процесс с обновленным A и исходным A умирает. Но я не могу этого сделать, поскольку как только исходный A завершает работу, S получает код выхода и продолжает работу, не дожидаясь, пока A выполнит свои фактические функции.
Подобным образом я мог бы выполнить .Command("A") из A и дождитесь завершения дочернего процесса, но разве это не удваивает ресурсы?
Добавление сценария-оболочки для выполнения перезапуска является допустимым вариантом. но мне бы хотелось, чтобы А был как можно более самодостаточным. Я не могу обязательно добавить A как процесс systemctl, поскольку S&A загружаются по требованию и запускаются (во время обновлений системы). Кроме того, S&A всегда будет работать на машине под управлением Linux.
Любая помощь приветствуется :)

Подробнее здесь: https://stackoverflow.com/questions/790 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»