这是我第一次设置服务器,在按照 Phusion Passenger 教程进行操作时遇到了障碍这里。说明要求我运行此命令:
passenger-memory-stats
这会导致此错误:
*** WARNING: Please run this tool as root. Otherwise the private dirty RSS of processes cannot be determined.
但是当我跑步时:
sudo passenger-memory-stats
我收到此错误:
sudo: passenger-memory-stats: command not found
我听从了其他地方的建议,并which
获取了乘客记忆统计的完整路径。然而,这导致了这样的结果:
> sudo /home/timothythehuman/.rvm/gems/ruby-2.0.0-p0/bin/passenger-memory-stats
/usr/bin/env: ruby_noexec_wrapper: No such file or directory
还有其他方法可以完成这项工作吗?或者知道为什么会发生这种情况吗?
答案1
sudo
出于安全原因,默认情况下会清理您的$PATH
。您可以通过运行以下命令查看路径:
$ sudo sh -c 'echo $PATH'
这可能会产生类似这样的结果:
/sbin:/bin:/usr/sbin:/usr/bin
如果你想运行这些目录之外的程序,你需要使用完全限定路径。如果那命令尝试使用相对路径运行其他命令(如您的示例所示),那么您需要为环境提供sudo
修改后的$PATH
。如下所示:
sudo env PATH=$PATH /home/timothythehuman/.rvm/gems/ruby-2.0.0-p0/bin/passenger-memory-stats
这会PATH
在sudo
环境中设置变量。此env
命令对于此类事情很有用。
你可以通过这样做来节省一些打字时间:
sudo env PATH=$PATH `which passenger-memory-stats`