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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top