相关疑难解决方法(0)

为什么sudo会改变PATH?

这是PATH没有sudo 的变量:

$ echo 'echo $PATH' | sh 
/opt/local/ruby/bin:/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)

这是PATHsudo 的变量:

$ echo 'echo $PATH' | sudo sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Run Code Online (Sandbox Code Playgroud)

据我所知,sudo应该PATH保持不变.这是怎么回事?我该如何改变?(这是在Ubuntu 8.04上).

更新:据我所知,没有任何脚本PATH以任何方式作为root更改.

来自man sudo:

为了防止命令欺骗,当在用户的PATH中搜索命令时(如果一个或两个都在PATH中),sudo会检查``.''和``''(都表示当前目录).但请注意,实际的PATH环境变量未被修改,并且不会更改地传递给sudo执行的程序.

sudo path environment-variables

279
推荐指数
7
解决办法
13万
查看次数

在启动时启动delayed_job

我正在使用带有capistrano的delayed_job,并希望使用'script/delayed_job start'启动网络应用程序时启动delayed_job.这样,capistrano可以在部署时重新启动它.如果服务器重新启动,那么我的delayed_jobs应该启动项目.

我怎样才能做到这一点?我应该在环境文件中还是作为初始化程序进行此操作?

capistrano ruby-on-rails delayed-job

34
推荐指数
4
解决办法
2万
查看次数

使用进程管理器启动延迟作业时丢失PID文件

我正在使用BluePill来管理诸如Rails的延迟作业之类的进程.在BluePill日志中,我收到此消息:

W, [2010-09-27T01:23:20.447053 #19441]  WARN -- : [fsg_distro:delayed_job] pid_file /srv/fsg_distro/shared/pids/delayed_job.pid does not exist or cannot be read
W, [2010-09-27T01:23:20.447368 #19441]  WARN -- : [fsg_distro:delayed_job] Executing start command: ruby script/delayed_job -e production start
I, [2010-09-27T01:23:20.469165 #19441]  INFO -- : [fsg_distro:delayed_job] Going from down => starting
Run Code Online (Sandbox Code Playgroud)

所以它声称丢失了一个pid文件,但是当BluePill启动延迟作业进程时,不应该创建pid吗?

更新 要更清楚地了解此错误,我可以手动成功运行该命令,但Bluepill无法运行启动命令.当我手动运行它时,它看起来像这样:

rails@george:/srv/fsg_distro/current$ /usr/bin/env RAILS_ENV=production /usr/bin/ruby /srv/fsg_distro/current/script/delayed_job start
delayed_job: process with pid 17564 started. 
Run Code Online (Sandbox Code Playgroud)

当我使用Bluepill运行它时,它看起来像这样:

W, [2010-10-03T21:24:13.943136 #17326]  WARN -- : [fsg_distro:delayed_job] pid_file /srv/fsg_distro/shared/pids/delayed_job.pid does not exist or cannot be read
W, [2010-10-03T21:24:13.943391 #17326]  WARN …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails delayed-job bluepill

6
推荐指数
1
解决办法
1657
查看次数

delayed_job没有拿起铁轨环境

关注了delayed_job和monit这个问题

它在我的开发机器上工作.但每当我尝试在生产上运行时,它就会在delayed_job.log上跟随死亡

*** Starting job worker delayed_job host:mail.welcometonewnepal.com pid:356
#<Mysql::Error: Access denied for user 'root'@'localhost' (using password: YES)>
*** Starting job worker delayed_job host:mail.welcometonewnepal.com pid:441
#<Mysql::Error: Access denied for user 'root'@'localhost' (using password: YES)>
*** Starting job worker delayed_job host:mail.welcometonewnepal.com pid:448
#<Mysql::Error: Access denied for user 'root'@'localhost' (using password: YES)>
Run Code Online (Sandbox Code Playgroud)

而我将在生产环境中运行

ruby script/delayed_job start -e production
Run Code Online (Sandbox Code Playgroud)

仍然出错了.我注意到这是由于未设置环境以致它试图获取开发环境.

/opt/ruby-enterprise-1.8.6-20090610/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:365:in `read': No such file or directory - /home/millisami/rails_apps/wnn_finale/config/environments/-e.rb (Errno::ENOENT)
Run Code Online (Sandbox Code Playgroud)

为什么环境参数设置不正确?

daemon ruby-on-rails delayed-job

5
推荐指数
1
解决办法
5380
查看次数

rvm monit delayed_job

我试图使用monit运行delayed_job,但它无法作为rvm的路径运行(每个用户的本地rvm安装)不可用于该命令.我的应用程序是带有bundler的rails2应用程序.Monit无法找到捆绑包.有没有人有任何建议,我怎么能告诉monv的rvm路径?

我收到了错误

[rails@x-rws1 current]$ monit start delayed_job -c config/delayed_job.monitrc 
'delayed_job' start: /usr/bin/env
'delayed_job' failed to start
no such file to load -- bundler
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/home/rails/public_html/myapp/current/config/../config/preinitializer.rb:3
/home/rails/public_html/myapp/current/config/boot.rb:28:in `load'
/home/rails/public_html/myapp/current/config/boot.rb:28:in `preinitialize'
/home/rails/public_html/myapp/current/config/boot.rb:10:in `boot!'
/home/rails/public_html/myapp/current/config/boot.rb:123
/home/rails/public_html/myapp/current/config/environment.rb:12:in `require'
/home/rails/public_html/myapp/current/config/environment.rb:12
/home/rails/public_html/myapp/current/script/delayed_job:3:in `require'
/home/rails/public_html/myapp/current/script/delayed_job:3
Run Code Online (Sandbox Code Playgroud)

我的config/delayed_job.monitrc

set daemon  120

check process delayed_job with pidfile /home/rails/public_html/myapp/shared/pids/delayed_job.pid
  start program = "/usr/bin/env RAILS_ENV=staging /home/rails/public_html/myapp/current/script/delayed_job start"
  stop program = "/usr/bin/env RAILS_ENV=staging /home/rails/public_html/myapp/current/script/delayed_job stop"
Run Code Online (Sandbox Code Playgroud)

和script/delayed_job可执行文件

#!/usr/bin/env ruby

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize
Run Code Online (Sandbox Code Playgroud)

monit delayed-job rvm

2
推荐指数
1
解决办法
3423
查看次数