Shell脚本启动乘客

时间:2013-02-05 06:51:31

标签: ruby-on-rails shell scripting crontab

我有一个shell脚本,如果没有运行乘客实例,则会启动它:

#!/bin/bash
/usr/sbin/lsof -i :82 > /home/var/www/site-owner/data/www/site.com/currenttest
if [ ! -s /home/var/www/site-owner/data/www/site.com/currenttest ];
  then
    cd /home/var/www/site-owner/data/www/site.com/current/
    passenger start -p 82 -d -e production --user site-owner
fi

如果我从root ssh环境启动它,效果非常好。 我试图从crontab启动它并且它没有以错误开头:“passenger_loader.sh:第12行:乘客:未找到命令”。

通过谷歌搜索的几个小时我发现root用户的crontab和root控制台用户有不同的环境但是,无论如何,我不明白如何让crontab root用户运行像root console user这样的脚本。我开始添加

source ~/.bash_profile
source ~/.bashrc 

到脚本但它没有改变任何东西。

1 个答案:

答案 0 :(得分:0)

我不知道它是否是一个解决方案,但它的工作方式与我需要的一样(我是从bash开始的):

#!/bin/bash

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

HOME=/root
PATH=/usr/local/rvm/gems/ruby-1.9.3-p374/bin:/usr/local/rvm/gems/ruby-1.9.3-p374@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p374/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
export HOME PATH

/usr/sbin/lsof -i :82 > /home/var/www/site-owner/data/www/site.com/currenttest
if [ ! -s /home/var/www/site-owner/data/www/site.com/currenttest ];
  then
    # passenger down
    date
    #. "/usr/local/rvm/scripts/rvm"
    rvm use 1.9.3
    cd /home/var/www/site-owner/data/www/site.com/current/
    passenger start -p 82 -d -e production --user site-owner
fi