Как запустить программу Go в качестве демон в Ubuntu?
Каков правильный способ запуска программы Go в качестве демон в Ubuntu? Затем я буду следить за ним с Монитом. Должен ли я просто сделать что-то вроде:
go run myapp.go &
Есть ли что-то особенное для Go, которое я должен учитывать?
Ответы
Ответ 1
Вы должны создать исполняемый файл для своей программы (go build
), а затем либо напишите script для upstart, и он запустит вашу программу как демона для вас или использовать внешний инструмент, например daemonize. Я предпочитаю последнее решение, потому что оно не зависит от зависящего от системы выскочка. С помощью daemonize вы можете запустить свое приложение, например
daemonize -p /var/run/myapp.pid -l /var/lock/subsys/myapp -u nobody /path/to/myapp.exe
Это даст вам хороший процесс демона unix со всеми необходимыми приготовлениями daemon, выполненными daemonize.
Ответ 2
Существует отчет об ошибке для демонстрации из программы Go: http://code.google.com/p/go/issues/detail?id=227
Но если то, что вам нужно, просто отсоединяется от процесса, я видел рекомендации либо выполнить одно из следующих действий:
nohup go run myapp.go
или
go run myapp.go & disown
Вы также можете использовать диспетчер процессов, например, написать init.d
, Startup
или использовать что-то вроде Supervisor, что мне лично очень нравится.