O software funciona quando executado manualmente através do terminal, mas não como um serviço Upstart

2

Eu escrevi um software que funcionará como um servidor para um aplicativo que eu fiz. Isso funciona perfeitamente quando eu o executo a partir do terminal, mas falha toda vez em uma ação muito específica quando eu o executo como um serviço do Upstart. Eu acho que ele trava quando lê a partir de um arquivo, mas é difícil saber usando o Haskell.

É assim que eu corro no terminal (quando funciona):

cd /srv/MyApp/
sudo -u appServerUser -g appServerUser ./appServer

E este é o meu arquivo .conf do Upstart (colocado em / etc / init /) (que trava):

start on runlevel [2345]
stop on runlevel [^2345]

chdir /srv/MyApp/
setuid appServerUser
setgid appServerUser

respawn limit 5 5

exec ./appServer

Eu configurei o Upstart incorretamente? Ou por que o programa se comporta de maneira diferente quando deveria ter exatamente os mesmos privilégios e é executado do mesmo lugar?

Percebi que estava um pouco incorreto sobre a falha do programa. O programa não trava, mas o segmento faz.

ENCONTRADO A FONTE: Depois de muito minification eu percebi que ele falha quando está tentando ler caracteres não-ASCII. Por que ele só falha quando executado como Upstart i além de mim, mas eu encontrei o problema e eu diria que é um bug no compilador ou no Upstart.

    
por SiXoS 15.09.2015 / 18:50

2 respostas

0

Houve alguns problemas com o chdir e o upstart há algum tempo. Geralmente o upstart estava fazendo algumas coisas estranhas com os processess que resultaram no ./application sendo executado não a partir do diretório definido pelo chiririr.

Tente exec /srv/MyApp/appServer sem chdir ou exec 'cd /srv/MyApp/; ./appServer' (haverá diferença de escopo para o diretório de trabalho aqui, mas isso não deve importar em seu exemplo)

    
por Marek Bettman 15.09.2015 / 19:06
0

Ok, eu encontrei o problema. Por que sempre há respostas tão simples para problemas tão complicados? Eu precisava colocar:

env LAN=en_US.UTF-8

no arquivo .conf

    
por SiXoS 16.09.2015 / 19:01