Como o livro de receitas do Upstart menciona: Observação que todos os processos (pré-início, pós-parada, etc.) serão executados conforme especificado pelo usuário.
Como resultado, mkdir
do diretório pessoal do usuário falhará com os resultados da permissão negada.
Uma solução é criar como raiz o diretório, chown
para o usuário alvo e depois executar o executável como usuário.
description "Foo"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
pre-start script
mkdir -p -m 0775 /var/run/foo
chown foo:foo /var/run/foo
end script
exec sudo -u foo_user /usr/local/bin/foo
onde foo_user
é o usuário alvo que iniciará o executável