nohup SBCL ubuntu no podía leer de la entrada estándar
Pregunta
En Ubuntu me sbcl 1.0.35 compilado con rosca. Puedo usar sin problemas sbcl desde la línea de comandos y mi página web Hunchentoot trabaja con rosca pero cuando cerrar la sesión que se ha ido. Cuando intento nohup sbcl
nohup ./src/runtime/sbcl --core salida / sbcl.core
consigo
(SB-IMPL :: SIMPLE-STREAM-PERROR "No se pudo leer ~ S" # 9)
He intentado varias combinaciones de redirigir la entrada estándar a / dev / null o un archivo y usando la opción de línea de comando de script, pero no lo entiendo muy bien lo que está pasando.
¿Cómo inicio sbcl desde la línea de comandos en Linux con nohup y mantener mi repl (página web) que se ejecuta?
Solución 3
Dmity-VK me envió en el camino correcto, gracias. SBCL intenta iniciar una repl cuando se inicia, y se lee de la norma. Cuando se utiliza el estándar en nohup
se redirige y no se puede leer. SBCL luego cae al depurador, que intenta leer desde la entrada estándar ... de ahí el bucle sin fin. La etiqueta --script
se acerca a la solución de este, excepto que tiene un (quit)
una vez que el guión ha sido leído. Por lo que poner un bucle sin fin en mi guión y listo.
así en un servidor Ubuntu con sbcl esto debería permitir que se inicia un servidor Hunchentoot
sudo nohup ./run-sbcl.sh --script foo.lisp > /dev/null 2> /dev/null &
donde foo.lisp tiene como última líneas algo así como
(defvar *alive* t)
(loop (sleep 1000) (if (not *alive*) (quit)))
Otros consejos
RESTAS Web-marco ( "Aplicación RESTO Servidor") por Andrey Moskvitin contiene código para demonizar adecuadamente ejemplo SBCL. Ver http://github.com/archimag/restas/blob /master/contrib/restas-daemon.lisp. Usted puede rasgar fácilmente partes RESTAS específicos.
Se podría empezar SBCL en Gnu pantalla y luego desprenderse de la sesión.
Esto también le da la posibilidad de volver a colocar a su REPL más tarde.