- Получить для себя последнее обновление.
- Если доступна новая версия, обновите ее и перезапустите.
- Загрузите файл и извлеките его (для простоты)
Я использую 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
Мобильная версия