nohup sbcl ubuntu não sabia ler a partir de entrada padrão
Pergunta
No Ubuntu, compilei o SBCL 1.0.35 com rosqueamento. Felizmente, posso usar o SBCL na linha de comando e meu site de HunchEntoot funciona com o Threading, mas quando eu logout, ele se foi. Quando eu tento nohup sbcl
nohup ./src/runtime/sbcl ---core output/sbcl.core
eu recebo
(SB-IMPL :: Simple-Stream-Perror "não sabia ler de ~ S" # 9)
Tentei várias combinações para redirecionar a entrada padrão para /dev /null ou um arquivo e usar a opção de linha de comando de script, mas não entendo bem o que está acontecendo.
Como faço para iniciar o SBCL da linha de comando no Linux com Nohup e manter meu repl (site) em execução?
Solução 3
Dmity-VK me enviou no caminho certo, obrigado. O SBCL tenta iniciar um REPL quando você o inicia e lê a partir do padrão em. Quando você usa nohup
O padrão é redirecionado e não pode ser lido. O SBCL então cai para o depurador que tenta ler do padrão em ... Daí o loop sem fim. o --script
tag chega perto de resolver isso, exceto que tem um (quit)
Depois que o script for lido. Então, eu coloquei um loop sem fim no meu script e pronto.
Então, em um servidor Ubuntu com SBCL, isso deve permitir que você inicie um servidor hunchentoot
sudo nohup ./run-sbcl.sh --script foo.lisp > /dev/null 2> /dev/null &
onde foo.lisp tem como suas últimas linhas algo como
(defvar *alive* t)
(loop (sleep 1000) (if (not *alive*) (quit)))
Outras dicas
RESTAS Web-Framework ("REST APLICATIVE") de Andrey Moskvitin contém código para daemonizar adequadamente a instância do SBCL. Ver http://github.com/archimag/restas/blob/master/contrib/restas-daemon.lisp. Você pode facilmente arrancar peças específicas do RESTAS.
Você pode começar o SBCL em Tela GNU e depois se destace da sessão.
Isso também oferece a possibilidade de recolocar para o seu REPL mais tarde.