2011-04-01 122 views
1

如何保存mnesia:info()輸出?mnesia保存信息

我使用遠程SH在UNIX屏幕,並且不能滾動窗口

+0

你對「unix screen」有什麼意思。你的意思是屏幕(1)的命令?你真的在使用遠程shell rsh(1)(你應該使用ssh btw)嗎?你爲什麼不能滾動?如果你描述了你連接到erlang的確切方式,我相信你的問題可以解決,但你的問題缺乏信息。 – 2011-04-02 08:37:33

+0

我通過ssh連接到遠程服務器,在那裏本地我使用rsm erlang節點連接到工作節點,並且運行mnesia:system_info() - 並且輸出太長且不在屏幕上,只能看到最後30個行和滾動不幫我 – vinnitu 2011-04-02 09:03:15

回答

1

這裏,你可以把user_default.erl模塊中的遠程節點上的功能:

out(Fun, File) -> 
    G = erlang:group_leader(), 
    {ok, FD} = file:open(File, [write]), 
    erlang:group_leader(FD, self()), 
    Fun(), 
    erlang:group_leader(G, self()), 
    file:close(FD). 

然後,你可以做以下(重新編譯和裝載user_default後):

1> out(fun() -> mnesia:info() end, "mnesia_info.txt"). 

或者,將以下內容剪切並粘貼到外殼中:

F = fun (Fun, File) -> 
     G = erlang:group_leader(), 
     {ok, FD} = file:open(File, [write]), 
     erlang:group_leader(FD, self()), 
     Fun(), 
     erlang:group_leader(G, self()), 
     file:close(FD) 
     end, 
    F(fun() -> mnesia:info() end, "mnesia_info.txt"). 
-1

我相信你不能。請參閱system_info(全部)。

-1

轉換爲字符串:

S = io_lib:format("~p~n", [mnesia:info()]). 

然後將其寫入磁盤。

+1

它不工作。您將從中得到的是:[「ok」,「\ n」]。 – 2011-04-02 08:34:06

+0

因爲system_info()寫到tty – vinnitu 2011-04-02 09:03:56

+0

無賴:)這會教我嘗試幫助而不嘗試它呃? – 2011-04-03 05:44:02

1

如果你在沒有滾動的終端上(如果你在xterm上,並且看到沒有滾動條只是簡單的打開它),一個非常有用的工具是screen:它提供虛擬的vt100 termials,甚至可以在終端之間切換然後再回來(對於需要偶爾交互的遠程服務器上的長時間運行的程序來說很好)。

而且您可以將轉錄記錄到文件並滾動輸出虛擬終端。

如果你使用的是Unix系統,那麼你可能只需要安裝預構建的軟件包,如果其他軟件都失敗了,你可以隨時拿起源代碼並自己構建。

另請看article其他解決方案。

如果你不能在系統上安裝screen,只使用Unix的內置東西,一個簡單但並不是很舒服的手段是:

:與 tee(1)

開始Erlang的外殼將輸出重定向

$ erl | tee output.log 
Eshell V5.7.5 (abort with ^G) 
1> mnesia:info(). 
===> System info in version {mnesia_not_loaded,[email protected], 
           {1301,742014,571300}}, debug level = none <=== 
opt_disc. Directory "/usr/home/peer/[email protected]" is NOT used. 
use fallback at restart = false 
running db nodes = [] 
stopped db nodes = [[email protected]] 
ok 
2>  

它有點難以脫身的外殼(您可能必須鍵入^D結束輸入文件),但你必須在文件中的TTY輸出:

$ cat output.log 
Eshell V5.7.5 (abort with ^G) 
1> ===> System info in version {mnesia_not_loaded,[email protected], 
           {1301,742335,572797}}, debug level = none <=== 
...