我有一个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
到脚本但它没有改变任何东西。
答案 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