nohup sbcl Ubuntu не мог читать с стандартного ввода
Вопрос
На 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 а затем отречься от сессии.
Это также дает вам возможность приехать в вашу реплику позже.