لم يستطع Nohup SBCL Ubuntu القراءة من الإدخال القياسي
سؤال
على Ubuntu قمت بتجميع SBCL 1.0.35 مع الخيوط. يمكنني استخدام SBCL بسعادة من سطر الأوامر ويعمل موقع الويب الخاص بي مع Threading ولكن عندما أختفي. عندما أحاول nohup sbcl
nohup ./src/runtime/sbcl -core output/sbcl.core
انا حصلت
(SB-IMPL :: Perror البسيط "لا يمكن القراءة من ~ S" # 9)
لقد حاولت مجموعات مختلفة من إعادة توجيه الإدخال القياسي إلى /dev /null أو ملف واستخدام خيار سطر أوامر البرنامج النصي ، لكنني لا أحصل على ما يجري.
كيف أبدأ SBCL من سطر الأوامر على Linux مع NoHup والحفاظ على تشغيل REPLIS (موقع الويب) الخاص بي؟
المحلول 3
أرسلني DMITY-VK على المسار الصحيح ، شكرًا لك. يحاول SBCL بدء تشغيل عند بدء تشغيله ، ويقرأ من المعيار في. عند استخدامه nohup
يتم إعادة توجيه المعيار في ولا يمكن قراءتها. ثم يسقط SBCL إلى مصحح الأخطاء الذي يحاول القراءة من Standard في ... ومن هنا الحلقة التي لا نهاية لها. ال --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 Application Server") بواسطة Andrey Moskvitin يحتوي على رمز لتصوير مثيل SBCL بشكل صحيح. نرى http://github.com/archimag/restas/blob/master/contrib/restas-daemon.lisp. يمكنك بسهولة مزق أجزاء خاصة Restas.
يمكنك بدء SBCL في شاشة GNU ثم فصل من الجلسة.
يمنحك هذا أيضًا إمكانية إعادة إعادة الاسترداد لاحقًا.