我正在开发Rails v2.3应用程序。并使用MySQL v5.1上的Ubuntu机器。在rake任务中执行'sudo su'命令
我有一个耙任务停止和开始 MySQL数据库像以下:
namespace :db do
task :some_db_task => :environment do
...
exec 'sudo /etc/init.d/mysql stop'
...
exec 'sudo /etc/init.d/mysql start'
end
end
正如你在上面的代码中看到的,我以前sudo
,以确保命令得到执行。然而,由于这种sudo
的,当我运行耙任务,会有一个提示让我输入root的密码虽然rake任务获得成功运行。
我想避免密码输入的东西,所以我想我可以执行shell命令,首先切换到root用户,然后停止/启动MySQL,所以我改变了我的代码如下:
namespace :db do
task :some_db_task => :environment do
...
exec 'sudo su'
exec '/etc/init.d/mysql stop'
...
exec '/etc/init.d/mysql start'
end
end
见,我加了sudo su
命令先运行。现在我再次运行我的rake任务,但是,令人惊讶的耙子任务运行,直到exec 'sudo su'
然后停止,其余代码甚至不会运行。为什么?如何摆脱它?
(一般情况下,我不rake任务时要输入root的密码运行MySQL的启动和停止)
一些链接'须藤su'西港岛线产卵的交互式终端为'root',等待你用它玩。你试图以错误的方式解决你的问题,如果你需要'root'权限,你将需要一个密码(或者你的设置非常不安全)。 – Romain
可能的重复http://stackoverflow.com/questions/5866632/execute-a-sudo-command-in-ruby-on-rails-app – Bohdan
'sudo su'是一种奇怪的方式说'sudo -s' – tadman