作为 ec2 用户:
[ec2-user@stg etc]$ sudo supervisorctl status
sudo: supervisorctl: command not found
以 root 身份:
[ec2-user@stg etc]$ sudo su -
Last login: Tue Jun 6 03:02:55 UTC 2017 on pts/1
[root@stg ~]# supervisorctl status
kafka BACKOFF Exited too quickly (process log may have details)
zookeeper RUNNING pid 24697, uptime 0:25:11
我不明白为什么会发生这种情况。我检查了 sudoers 文件,但没有发现任何有意义的东西。请帮忙。
答案1
这通常意味着该命令不在 EC2 用户的 PATH 上。
如果您echo $PATH
在两个 bash 会话中都这样做,您仍然会看到 root/usr/sbin/
在其路径上。
要解决此问题,您可以通过将以下内容添加到 .bashrc 来添加到 ec2-user 的路径:
export PATH="$PATH:/usr/sbin/"
或者,可执行文件的完整路径sudo /usr/sbin/supervisorctl
应该可以工作。
答案2
经过反复检查,我发现很简单,supervisor 使用 python 2.6,无法在 amazon linux ami 上使用 2.7,显然(rhel fedora)你可以通过以下方式验证这一点
#python2.6 -c "import supervisor; print('success')"
成功
#python2.7 -c "import supervisor; print('success')"
回溯(最近一次调用最后一次):文件“”,第 1 行,ImportError:没有名为 Supervisor 的模块
所以你需要告诉系统使用 2.6 而不是 2.7 - 并且你必须确保这样做是安全的 - 你不希望其他应用程序开始搞乱。(假设你已经安装了 2.6 和 .27)
修复步骤如下:
首先运行此命令
# sudo update-alternatives --config python
将出现一个菜单,选择正确的菜单。#
有2个程序提供‘python’。
Selection Command
-----------------------------------------------
*+ 1 /usr/bin/python2.7
2 /usr/bin/python2.6
Enter to keep the current selection[+], or type selection number: 2
#
选择正确的一个然后就可以开始了。
最后,尝试一下这个:
$ sudo /etc/init.d/supervisord start
Starting supervisord: [ OK ]
问题解决了!