nohup sbcl Ubuntu не мог читать с стандартного ввода

StackOverflow https://stackoverflow.com/questions/2458805

  •  20-09-2019
  •  | 
  •  

Вопрос

На Ubuntu я составил SBCL 1.0.35 с резьбой. Я могу с радостью использовать SBCL из командной строки, и мой веб -сайт Hunchentoot работает с потоками, но когда я вышел в систему, он исчез. Когда я пытаюсь nohup sbcl

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

я получил

(SB-Impl :: Simple-Stream-Perror "не мог читать из ~ s" # 9)

Я попытался сделать различные комбинации перенаправления стандартного ввода в /dev /null или файл и с использованием опции командной строки Script, но я не совсем понимаю, что происходит.

Как запустить SBCL из командной строки на Linux с NOHUP и сохранить свою реплику (веб -сайт)?

Это было полезно?

Решение 3

Dmity-VK прислал меня на правильном пути, спасибо. SBCL пытается запустить реплику, когда вы запускаете ее, и читает из стандарта. Когда вы используете nohup Стандарт в перенаправлении и не может быть прочитал. Затем SBCL падает до отладчика, который пытается читать из стандарта в ... отсюда бесконечная петля. А --script тег приближается к решению этого, за исключением того, что у него есть (quit) Как только сценарий был прочитал. Поэтому я положил бесконечную петлю в свой сценарий и вуаля.

Итак, на сервере Ubuntu с SBCL это должно позволить вам запустить сервер Hunchentoot

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

где у Foo.lisp в качестве последних линий что -то вроде

(defvar *alive* t)

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

Другие советы

RESTAS Web-Framework («Сервер приложений REST») от Andrey Moskvitin содержит код для правильного экземпляра SBCL. Видеть http://github.com/archimag/restas/blob/master/contrib/restas-daemon.lisp. Анкет Вы можете легко оторвать конкретные детали RESTAS.

Вы можете начать SBCL в Экран GNU а затем отречься от сессии.

Это также дает вам возможность приехать в вашу реплику позже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top