使用Whenever gem for Rails在cron作业中重复进程

时间:2014-12-07 04:06:24

标签: ruby-on-rails linux cron

使用Rails 3.2.21,每当gem。这是我的crontab列表:

Begin Whenever generated tasks for: abc 0 * * * * /bin/bash -l -c 'cd /home/deployer/abc/releases/20141201171336 && RAILS_ENV=production bundle exec rake backup:perform --silent'

这是运行预定作业时的输出:

deployer@localhost:~$ ps aux | grep rake deployer 25593 0.0 0.0 4448 764 ? Ss 12:00 0:00 /bin/sh -c /bin/bash -l -c 'cd /home/deployer/abc/releases/20141201171336 && RAILS_ENV=production bundle exec rake backup:perform --silent' deployer 25594 0.0 0.1 12436 3040 ? S 12:00 0:00 /bin/bash -l -c cd /home/deployer/abc/releases/20141201171336 && RAILS_ENV=production bundle exec rake backup:perform --silent deployer 25631 69.2 4.4 409680 90072 ? Sl 12:00 0:06 ruby /home/deployer/abc/ shared/bundle/ruby/1.9.1/bin/rake backup:perform --silent deployer 25704 0.0 0.0 11720 2012 pts/0 S+ 12:00 0:00 grep --color=auto rake

请注意,前2个进程实际上是类似的进程。他们同时运行2个相同的工作吗?我该如何预防?

2 个答案:

答案 0 :(得分:0)

deployer 25593  0.0  0.0   4448   764 ?        Ss   12:00   0:00 /bin/sh -c /bin/bash …
deployer 25594  0.0  0.1  12436  3040 ?        S    12:00   0:00 /bin/bash …
     

请注意,前2个进程实际上是类似的进程。他们同时运行两个相同的工作吗?

不,他们不是。第一个是启动第二个的/bin/sh crontab 命令/bin/bash …。很可能/bin/sh正在等待/bin/bash的终止,并且在/bin/bash …完成执行之前不再运行;你可以用e验证这个。 G。 strace -p 25593

答案 1 :(得分:-2)

如果您发现删除并部署,请检查您的scheduled.rb是否有重复条目 如果scheduled.rb中没有重复条目,则需要从cron选项卡中删除/注释它 要删除或评论cron中的作业,请查看https://help.1and1.com/hosting-c37630/scripts-and-programming-languages-c85099/cron-jobs-c37727/delete-a-cron-job-a757264.htmlhttp://www.esrl.noaa.gov/gmd/dv/hats/cats/stations/qnxman/crontab.html