转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
问题背景:
在一台不通外网的服务器上装rabbitmq,然后在启动的时候,遇到了报错
"/usr/lib/rabbitmq/bin/rabbitmq-server: line 80: erl: command not found"的报错,于是展开了破案。
[root@host1 ~]# rabbitmq-server
/usr/lib/rabbitmq/bin/rabbitmq-server: line 80: erl: command not found
[root@host1 ~]#
排查解决:
1. 手动执行erl命令,发现是成功的,说明之前装的erl命令没问题。
2. 查看环境变量配置,确认rabbitmq位置:
[root@host1 ~]# cat /etc/profile
# /etc/profile
...... #省略若干行
export PATH=$PATH:/usr/local/erlang/bin
export PATH=$PATH:/usr/lib/rabbitmq/bin
[root@host1 ~]#
3. 使用环境变量路径中的文件启动,是成功的:
[root@host1 ~]# sh /usr/lib/rabbitmq/bin/rabbitmq-server
.... #省略
###### ## /var/log/rabbitmq/rabbit@host1-sasl.log
Starting broker...
completed with 0 plugins.
4. 确认rabbitmq-server命令执行的脚本的位置
[root@host1 ~]# which rabbitmq-server
/sbin/rabbitmq-server
[root@host1 ~]#
5. 比较两个文档,发现并不是同一个文件,/sbin/rabbitmq-server是之前有人装了rabbitmq后没有清理干净的遗留文件。。。
于是把可以执行的/usr/lib/rabbitmq/bin/rabbitmq-server做软个连接到/sbin下面去替代原来执行报错的/sbin/rabbitmq-server文件:
[root@host1 sbin]# mv /sbin/rabbitmq-server /sbin/rabbitmq-server.bak
[root@host1 sbin]# ln -s /usr/lib/rabbitmq/bin/rabbitmq-server /sbin/rabbitmq-server
[root@host1 sbin]# ln -s /usr/lib/rabbitmq/bin/rabbitmq-env /sbin/rabbitmq-env
然后启动rabbitmq,启动成功。