Scripts de inicialização para um Go Web App

Escreveu scripts simples para iniciar / parar um aplicativo da web go. Às vezes, precisamos iniciar um pool de aplicativos de trabalho em portas específicas. Os scripts a seguir ajudam.

Esses scripts são trabalhos do sistema para inicialização e devem ser colocados em / etc / init.

app-worker.conf

description     "App-Worker"
author
"Adnaan"

start on
(net-device-up
and local-filesystems
and runlevel [2345])

stop on runlevel
[06]
respawn


instance $PORT


script

#initramfs provides early userspace
exec 2>>/dev/.initramfs/app-worker.log
set -x
export APP="/root/goworkspace/src/myappcode"
#change directory or go won't read the web app resources
chdir $APP

#execute
exec sudo $APP/app --port $PORT
end script

O script acima pode ser usado diretamente como:

Comece um trabalhador

service app-worker start PORT=8085

Pare um trabalhador

service app-worker stop PORT=8085

Mas e se precisar de um monte de trabalhadores. Não podemos começar individualmente agora, podemos?

app-pool.conf

description "App Pool"
author
"Adnaan"

start on
(local-filesystems and net-device-up and runlevel [2345])

stop on shutdown



pre
-start script
#initramfs provides early userspace
exec 2>>/dev/.initramfs/app-pool.log
set -x

start app
-worker PORT=8085
start app
-worker PORT=8086
#add more jobs..
end script

Comece um Pool

service app-pool start

Pare a piscina

service app-pool stop

O acima não terá nenhum efeito, pois reinicia os trabalhadores novamente. Precisamos parar individualmente os trabalhadores. Vamos encontrar nossos trabalhadores.

initctl list | grep "app" 

Escolha seu trabalhador na lista e interrompa-o conforme descrito acima. Percebo que estamos parando individualmente os trabalhadores. Bem, ainda estou procurando uma boa solução para fazer isso em uma única etapa. Sugestões bem-vindas!