RabbitMQ命令执行异常:执行add_user命令返回badarg错误求助
解决RabbitMQ执行
rabbitmqctl add_user时的badarg错误 这个错误本质是RabbitMQ的内部进程无法找到有效的终端输出关联(报错里的group_leader,[undefined,...]就是关键线索),之前能正常执行说明是环境或进程状态变化导致的,给你几个针对性的解决办法:
- 先确保终端环境正常:不要在已经断开的SSH会话、非交互式脚本(比如crontab里未配置输出的任务)里执行这个命令,切换到正常的交互式终端再试。
- 显式指定RabbitMQ节点执行:有时候节点名称的解析出问题也会触发这个错误,试试指定默认节点名执行:
如果你的RabbitMQ节点名不是默认的sudo rabbitmqctl -n rabbit@localhost add_user james mypasswordrabbit@localhost,可以先通过rabbitmqctl status查看(如果status能正常运行的话),替换成实际节点名即可。 - 重启RabbitMQ服务:进程长时间运行可能出现终端关联异常,重启能重置进程状态:
重启完成后再重新执行添加用户的命令。sudo systemctl restart rabbitmq-server - 保留环境变量执行sudo命令:sudo默认会重置部分环境变量,可能丢失终端相关的变量,试试用
-E参数保留当前环境:sudo -E rabbitmqctl add_user james mypassword
简单说下错误根源:RabbitMQ的日志模块在写入输出时,需要关联一个有效的终端进程(group leader),当这个关联变成undefined时,就会抛出badarg异常,以上方法都是围绕恢复这个关联或者规避环境问题来解决的。
内容的提问来源于stack exchange,提问作者Zorgan




