O comando não é executado na inicialização

0

Eu quero iniciar um servidor de unicórnio na inicialização de um servidor Ubuntu. Eu mudei o arquivo /etc/rc.local para ter isto:

echo 'test' >> sudo /tmp/unicorn
test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
RAILS_ENV=staging
/etc/init.d/unicorn_lescollectionneurs start >> sudo /tmp/unicorn
exit 0

Quando executo o arquivo, ele funciona, minha inicialização do servidor, mas não há nada em /tmp/unicorn . Quando eu reinicio o servidor, o unicórnio não está em execução, mas o link symoblic é criado. Eu não sei como ter um traço.

O que posso fazer?

Editar após a resposta de Florian Diesch

Eu fiz algumas alterações. Este é o novo script:

test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
export RAILS_ENV=staging
sudo -H -u deployer bash -c '/etc/init.d/unicorn_lescollectionneurs start' >> /tmp/unicorn
exit 0

Eu quero rodar o script como "deployer" porque eu uso o rbenv:

echo "starting" >> /tmp/unicorn_log
sig 0 && echo >&2 "Already running" && exit 0
run "$CMD" >> /tmp/unicorn_log
echo "end starting" >> /tmp/unicorn_log

No arquivo /tmp/unicorn_log/ , ele mostra apenas "inicial". É possível ter mais logs?

    
por Dougui 22.11.2014 / 13:51

1 resposta

0

O comando

echo 'test' >> sudo /tmp/unicorn

é o mesmo que

echo 'test' /tmp/unicorn >> sudo

então acrescenta a linha

test /tmp/unicorn

para o arquivo sudo na pasta atual.

Se você deseja acrescentar test ao arquivo /tmp/unicorn usando privilégios de root, use

echo 'test' | sudo tee -a /tmp/unicorn

em vez disso. Como /etc/rc.local é executado pela raiz, você não precisa de sudo , mas apenas

echo 'test' >> /tmp/unicorn

Da mesma forma, o comando

/etc/init.d/unicorn_lescollectionneurs start >> sudo /tmp/unicorn

é o mesmo que

/etc/init.d/unicorn_lescollectionneurs start /tmp/unicorn >> sudo

Dependendo de como /etc/init.d/unicorn_lescollectionneurs está escrito, isso pode ou não produzir um erro (o mais provável é que não e /tmp/unicorn é simplesmente ignorado).

A linha

RAILS_ENV=staging

é apenas definir a variável RAILS_ENV , mas não exportá-la. Portanto, não está disponível para /etc/init.d/unicorn_lescollectionneurs e seus processos filhos. Use

export RAILS_ENV=staging

em vez disso.

    
por Florian Diesch 22.11.2014 / 14:25