Capistrano:`run`和`sudo`之间的区别?

时间:2013-10-04 15:30:54

标签: ruby-on-rails linux capistrano

我正在关注#335 Deploying to a VPS 。在deploy.rb

%w[start stop restart].each do |command|
desc "#{command} unicorn server"
task command, roles: :app, except: {no_release: true} do
  run "/etc/init.d/unicorn_#{application} #{command}"
end

当我运行cap deploy:start时,我得到sh: /etc/init.d/unicorn_appname: Permission denied。但如果我将运行更改为sudo:sudo "/etc/init.d/unicorn_#{application} #{command}",则会获得sudo: /etc/init.d/unicorn_appname: command not found

命令真的不存在,或sudorun彼此不同?

1 个答案:

答案 0 :(得分:0)

您正在获得权限被拒绝,因为正常用户被禁止进入/etc/init.d /

您找不到命令,因为应用程序可能不正确或未设置。基本上,/ etc / init.d / unicorn_appname存在吗?可能不是。

你不应该将run更改为sudo,你应该使用run“#{sudo} ...”或者运行“#{try_sudo} ...”无论如何。