需求:
每隔一分钟运行一次指定的ruby脚本
实现:
这里我们提供一份儿实验用代码 如果能调通 则我们就可以运行任何脚本了
实验代码如下:
新建test.sh文件
#!/usr/bin/env bash
source /home/duan/.rvm/environments/ruby-1.8.7-p371
cd /home/duan/aptanapro/remote
rails runner "Order.first"
第一行是必须有的 因为crontab的运行环境与shell或ruby的运行环境不同 导致就算是你单独运行文件成功了换到crontab环境下还是不工作的情况。
第二行指定ruby环境 这边是rvm路径 其实rvm官网上也给出了如何配合rvm使用crontab,有兴趣的可以看这里
第三行指定了我的rails地址,有一个名字为remote的rails项目 路径是/home/duan/aptanapro/
第四行运行rails runner命令 相当与在rails项目中运行命令了 命令内容为调用Order表的第一行
新建getcron文件
接着 咱们在与test.rb的同一文件夹下新建一个getcron文件,里面写上这样一句
* * * * * /home/duan/test.sh > /home/duan/result.txt 2>&1
含义大家应该都清楚 每分钟执行一次test.sh文件 把结果输出到result.txt中 不要发邮件
权限
root用户和非root用户都可以执行crontab,不过有些命令是需要