Domanda

Su Ubuntu ho SBCL 1.0.35 compilati con filettatura. Posso tranquillamente usare SBCL dalla riga di comando e il mio sito hunchentoot funziona con threading, ma quando ho il logout non c'è più. Quando tento di nohup SBCL

nohup ./src/runtime/sbcl --core uscita / sbcl.core

ho

(SB-IMPL :: Simple-STREAM-perror "impossibile leggere da ~ S" # 9)

Ho tentato varie combinazioni di reindirizzare lo standard input a / dev / null o un file e utilizzando l'opzione della riga di comando di script, ma non ho ben capito cosa sta succedendo.

Come inizio SBCL dalla riga di comando su Linux con nohup e mantenere il mio REPL (sito web) in esecuzione?

È stato utile?

Soluzione 3

Dmity-VK mi ha mandato sulla strada giusta, grazie. SBCL tenta di avviare un REPL quando si esegue il programma, e legge dallo standard. Quando si utilizza nohup lo standard viene reindirizzato e non possono essere letti. SBCL scende poi al debugger che cerca di leggere da standard ... da qui il ciclo infinito. Il tag --script si avvicina alla soluzione di questo, tranne che ha un (quit) volta che lo script è stato letto. Così ho messo un ciclo infinito nel mio script e voilà.

così su un server di Ubuntu con SBCL questo dovrebbe permettere di avviare un server hunchentoot

sudo nohup ./run-sbcl.sh --script foo.lisp > /dev/null 2> /dev/null &

dove foo.lisp ha come sua ultima linee qualcosa come

(defvar *alive* t)

(loop (sleep 1000) (if (not *alive*) (quit)))

Altri suggerimenti

RESTAS web-quadro ( "REST Application Server") di Andrey Moskvitin contiene il codice per demonizzare correttamente un'istanza SBCL. Vedere http://github.com/archimag/restas/blob /master/contrib/restas-daemon.lisp. Si può facilmente strappare parti RESTAS-specifici.

Si potrebbe iniziare SBCL in Gnu schermo e poi staccare dalla sessione.

Questo ti dà anche la possibilità di ricollegare al vostro REPL tardi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top