2011-04-01 94 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 <=== 
...