Rabbitmq 如何将shell脚本变量传递给erlang:exit()?
我正在尝试使用命令Rabbitmq 如何将shell脚本变量传递给erlang:exit()?,rabbitmq,erlang,Rabbitmq,Erlang,我正在尝试使用命令rabbitmqctl eval'erlang:exit(c:pid(“$pid”),kill)删除RMQ中卡住的进程。但出现以下错误 Error: {:undef, [{:c, :pid, ['0,159,0'], []}, {:erl_eval, :do_apply, 6, [file: 'erl_eval.erl', line: 680]}, {:erl_eval, :expr_list, 6, [file: 'erl_eval.erl', line: 888]}, {:
rabbitmqctl eval'erlang:exit(c:pid(“$pid”),kill)删除RMQ中卡住的进程。
但出现以下错误
Error:
{:undef, [{:c, :pid, ['0,159,0'], []}, {:erl_eval, :do_apply, 6, [file: 'erl_eval.erl', line: 680]}, {:erl_eval, :expr_list, 6, [file: 'erl_eval.erl', line: 888]}, {:erl_eval, :expr, 5, [file: 'erl_eval.erl', line: 411]}, {:erl_eval, :exprs, 2, []}]}
有没有办法解决这个错误?我做错了什么?接受3个整数,而不是字符串,如果要使用字符串,请使用
这里的问题是你想打电话
c:pid(“0159,0”),
而且应该是
c:pid(0159,0)
或
list_to_pid(“”)
exit/2
接受两个参数:一个pid
和任何erlang术语(例如atomkill
)。pid
既不是字符串也不是整数,而是它自己的类型,由一些函数返回,如self/0
。erlang向shell输出一个pid,如下所示:
<0.64.0>
erlang:exit('$pid',kill)
我想到了c:pid(“0159,0”),怀疑tat可能就是原因。但我仍然有一个问题,如何传递Pid,使其可以是
c:Pid(0159,0)
或list\u to\u Pid(“”
)。。我正在尝试这种方法rabbitmqctl eval'erlang:exit(list_to_pid(“$pid”),kill)。
。但是仍然不起作用。@dharpatel如果您的$pid变量是0.159.0
(注意点),并且您使用list\u-to\u-pid
,那么您缺少了所包含的
:$erl-eval'退出(list\u-to\u-pid(“”,kill)。
@dharpatel如果您使用逗号(0159,0
),您可以使用c:pid>:erl-eval'退出(c:pid>)(“$PROCESS_ID'),kill)。
谢谢Jose。这个问题已经通过erlang:exit(c:pid(“$pid'),kill)
解决了。但是您建议的替代命令也会起作用。谢谢您的帮助。“$pid'”
的类型和值是什么。查看错误消息,它看起来像一个字符串,在本例中是erlang:exit(c:pid>)(list_to_pid(“$pid”),kill)
应该可以工作rabbitmqctl eval'erlang:exit('$pid',kill)。
也不工作。它给了我一个错误。错误:{:unde,[{:erlang,:exit,[0,159,0,:kill],{:erl_eval,:do_apply,6,[文件:'erl_eval.erl',行:680]},{:erl(erl)erl eval,:exprs,2,[]
我得到了解决方案。基本上erlang:exit('$pid',kill)
给出了unde
错误。所以我需要通过erlang:exit(c:pid('$pid'),kill)定义乐趣。
解决了问题。
erlang:exit('$pid',kill)