Estou usando o Sass em um servidor CentOS 5.8 e quero que continue em execução após o logout do SSH, para que outros usuários possam editar arquivos * .scss por dias ou até semanas, sem a necessidade de iniciar o programa sempre que efetuarem login (na verdade , eles nem têm acesso SSH).
Eu usei o seguinte comando desta pergunta / resposta :
$ nohup sass - observe o caminho / para / scss / files: caminho / para / css / output / files &
Então, saio da sessão SSH e o processo continua em execução. Tudo funciona bem (fazer login novamente e usar o touch para criar um arquivo de teste (test.scss) aciona corretamente a criação do arquivo test.css correspondente) pelos primeiros minutos, mas depois de um tempo os arquivos * .scss param de ser compilado ... No entanto,
$ ps aux | grep 'sass'
Mostra que o processo ainda está em execução.
Alguém sabe o que estou fazendo de errado?
EDIT: esta é a saída que estou recebendo do nohup.out:
/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in ``: Parece que sua instalação do ruby está faltando psych (para saída YAML). Para eliminar esse aviso, instale o libyaml e reinstale o ruby. >>> Sass está observando mudanças. Pressione Ctrl-C para parar. >>> Novo modelo detectado: /home/*/sites/all/themes/test.scss substituir private_html / sites / all / themes // test.css >>> Modelo excluído detectado: /home/*/sites/all/themes/test.scss
O erro relacionado ao YAML parece não estar relacionado ao problema, pois o Sass está funcionando corretamente por um curto período de tempo. Ele silenciosamente para de funcionar em algum momento, mesmo que o processo continue em execução ...
Respostas:
Ugh parece um problema irritante. Um problema duvidoso com o nohup, pois é amplamente usado, maduro e simples. Vamos eliminá-lo de qualquer maneira. Também estamos eliminando o background do processo como um problema.
Abra uma tela ... literalmente
screen
execute seu comando sem nohup, mas vamos registrá-lo em algum lugar
sass --watch path/to/scss/files:path/to/css/output/files 2>&1 | tee sass.log
o 2> & 1 garante que pegamos STDERR e STDOUT, enquanto tee bifurca um log para o disco
agora desanexe sua tela:
ctrl+a d
logout, efetue login novamente e veja se isso faz alguma diferença. Não é necessário conectar novamente à sua tela, pois você tem o sass.log ativo, mas você faria isso
screen -r
.fonte