2010-03-16 83 views
4

在Ubuntu上,我使用線程編譯了sbcl 1.0.35。我可以很好地使用命令行中的sbcl,並且我的hunchentoot網站可以與線程協同工作,但是當我註銷時它已經不存在了。當我嘗試NOHUP SBCLnohup SBCL ubuntu無法從標準輸入讀取

nohup的./src/runtime/sbcl --core輸出/ sbcl.core

我得到

(SB-IMPL :: SIMPLE-STREAM-PERROR「couldn」讀取〜S「#9)

我試過各種組合重定向標準輸入到/ dev/null或一個文件,並使用腳本命令行選項,但我不明白是怎麼回事。

如何從nohup的linux命令行啓動sbcl並保持我的repl(網站)正在運行?

回答

1

Dmity-vk給我發送了正確的音軌,謝謝。 SBCL嘗試在啓動時啓動repl,並從標準中讀取。當您使用nohup時,標準輸入被重定向並且無法讀取。然後SBCL下降到試圖從標準讀取的調試器......因此是無限循環。 --script標籤接近於解決這個問題,只是在腳本被讀取後它有一個(quit)。所以我在我的劇本和瞧了一個無盡的循環。

因此與SBCL一個Ubuntu服務器上這應該讓你開始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))) 
2

您可以在Gnu Screen開始SBCL,然後從會話中分離。

這也給你以後重新連接到你的REPL的可能性。