ejabberd 按命令运行,但不通过服务/ejabberdctl 运行。

ejabberd 按命令运行,但不通过服务/ejabberdctl 运行。

我已经设置了 ejabberd,如果我通过命令行运行 ejabberd,它可以正常运行,我可以连接、与其他人聊天等。

当我跑步时

service ejabberd start

一切执行正常,但服务无法启动。

当我跑步时

ejabberdctl start

ejabberd 说该节点已关闭并且不提供更多信息。

当我跑步时

serivce ejabberd live

我确实得到了一些输出!以下是我得到的...

Erlang R15B01 (erts-5.9.1) [source] [64-bit] [async-threads:0] [kernel-poll:false]

Eshell V5.9.1  (abort with ^G)
(ejabberd@gcmysql)1> Mnesia(ejabberd@gcmysql): Data may be missing, Corrupt logfile     deleted: "/var/lib/ejabberd/LATEST.LOG", {file_error,
                                                                                                             "/var/lib/ejabberd/LATEST.LOG",
                                                                                                     eacces}

=ERROR REPORT==== 30-Jan-2013::12:51:30 ===
Mnesia(ejabberd@gcmysql): ** ERROR ** (core dumped to file: "/var/lib/ejabberd/MnesiaCore.ejabberd@gcmysql_1359_568290_621095")
 ** FATAL ** {error,{"Cannot open dets table",offline_msg,
                 [{file,"/var/lib/ejabberd/offline_msg.DAT"},
                  {type,bag},
                  {keypos,2},
                  {repair,true}],
                 {file_error,"/var/lib/ejabberd/offline_msg.DAT",eacces}}}

=ERROR REPORT==== 30-Jan-2013::12:51:40 ===
Mnesia(ejabberd@gcmysql): ** ERROR ** mnesia_event got unexpected event: {'EXIT',
                                                                      <0.67.0>,
                                                                      killed}

=INFO REPORT==== 30-Jan-2013::12:51:40 ===
application: mnesia
exited: killed
type: permanent
{error_logger,{{2013,1,30},{12,51,41}},crash_report,[[{initial_call,{application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']}},{pid,<0.39.0>},{registered_name,[]},{error_info,{exit,{bad_return,{{ejabberd_app,start,[normal,[]]},{'EXIT',{"{application_terminated,mnesia,killed}",{gen_server,call,[application_controller,{load_application,crypto},infinity]}}}}},[{application_master,init,4,[{file,"application_master.erl"},{line,138}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,227}]}]}},{ancestors,[<0.38.0>]},{messages,[{'EXIT',<0.40.0>,normal}]},{links,[<0.38.0>]},{dictionary,[]},{trap_exit,true},{status,running},{heap_size,987},{stack_size,24},{reductions,153}],[]]}
{"Kernel pid terminated",application_controller,"{application_terminated,mnesia,killed}"}

Crash dump was written to: /var/log/ejabberd/erl_crash.dump
Kernel pid terminated (application_controller) ({application_terminated,mnesia,killed})

我已经绞尽脑汁一个星期了,但毫无进展。请帮帮我!

更新:只是抛出这个。我一直以 root 身份运行上述命令,因为我的本地用户无权启动它们。mnesia 数据库(文件?)是否可能被修改为 root:root?

答案1

跑步后

find / -name ejabberd

我偶然发现了 /var/lib/ejabberd。使用 CD 进入目录,发现 mnesia 文件已被修改为 root。将文件重新修改为 ejabberd:ejabberd,运行

service ejabbered start

并且启动没有问题。重启后,服务恢复正常。

希望此功能能够保持运行,以便任何遇到奇怪的节点关闭问题的人都可以发现它并弄清楚发生了什么。

相关内容