我做了几份工作,上帝在我的红宝石应用程序中负责处理。但是,当服务器重新启动时,作业将停止。我想避免这种情况,所以我已经在我的服务器上编写了这个脚本。它看起来像这样。
my_app.sh
#!/bin/bash
# god tasks
#
case $1 in
start)
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god start
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque.god
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque_schedule.god
;;
esac
exit 0如果我手动登录并写入
"/etc/init.d/my_app start“
它给了我
Sending 'start' command
No matching task or group
Sending 'load' command with action 'leave'
The following tasks were affected:
resque-0
resque-1
resque-2
resque-3
resque-4
Sending 'load' command with action 'leave'
The following tasks were affected:
resque_scheduler一切正常,做我想做的事,也就是工作。
我尝试过几种在引导(Linux10.4.4LTS)、rc.local、rc-默认情况下启动这个脚本的方法,现在我的最新尝试是crontab。
脚本必须在我的用户而不是根用户下运行(如果我在root下运行它,它就找不到ruby安装)。
因此,我在我的用户帐户下配置了crontab:
@reboot /etc/init.d/my_app start可惜这行不通..。我不知道我做错了什么这可能是不必要的。我的意思是,当启动红宝石应用程序时,你不应该每辆车都能做到这一点吗?
我在这台服务器上使用乘客,我不知道这和它有什么关系吗?
下面的解决方案以及我对sh:所做的更改
my_app.sh
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god start"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque.god"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque_schedule.god"发布于 2012-10-01 08:11:08
忘了这件事吧。
Centos/Fedora:
sudo chmod a+x /etc/init.d/my_app
sudo chkconfig --add my_app
sudo chkconfig my_app onUbuntu/Debian:
sudo update-rc.d my_app defaults这两种符号都将脚本链接到/etc/rc1.d、/etc/rc2.d等,并使脚本可以在启动时为这些运行级别运行。
https://stackoverflow.com/questions/12669396
复制相似问题