ubuntu下利用crontab自动运行ruby脚本
2013-01-08 20:35
330 查看
需求:
每隔一分钟运行一次指定的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,不过有些命令是需要权限的 如开关机命令等,咱们这个例子中用普通用户即可运行请用 chmod 777 test.sh 和 chmod 777 getcron 来把两个文件权限放开 (也许不用 但是还是放开好了 万无一失)
执行
现在 咱们来执行getcron文件 让其去执行test.sh文件cd到test.sh文件目录下 运行
crontab getcron好了 咱们来查看一下下
用crontab -l 来查看有没有 如果有了 可以用crontab -r 来删除这个定时
另一个测试
如果你嫌上面的太麻烦 只是想小小的测试一把 请自己建一个文件 如tryit在这个文件内写入
* * * * * export DISPLAY=:0 && /usr/bin/bluefish
bluefish是一个html编辑软件 它的默认的程序执行路径是 /usr/bin/bluefish 执行gui的程序需要加上 export DISPLAY=:0 才能显示gui的界面 每分钟执行这个文件
在此文件目录下执行
crontab tryit
这样一个小测试又完成了~
注意
很有意思的是 ubuntu系统 如果你写了 crontab命令来指定文件运行,它会在指定时间内重复两次!原因是一个是你本身用户的crontab,另一次运行的是在root权限下的crontab,如果开启和关闭,仅仅关闭自己权限的可不行 记得要加sudo啊。。。。
相关文章推荐
- ubuntu crontab自动执行ruby脚本
- ubuntu 利用crontab 来运行php
- crontab详解-如何让脚本自动定时运行,设置、启动 linux定时器
- ubuntu下开机自动运行脚本、定时运行脚本
- Ubuntu下自动启动终端并运行脚本或命令
- Ubuntu 下利用expect脚本自动登录ssh作代理
- ubuntu登录自动运行脚本(解决root权限问题)
- centos7 在docker swarm中运行Jenkins,利用gitlab的webhook触发自动部署脚本
- 利用.bat脚本使得可运行jar开机自动运行
- ubuntu运行sh脚本sudo自动输入密码
- ubuntu登录自动运行脚本(解决root权限问题)
- Ubuntu自动运行脚本
- ubuntu下开机自动运行脚本、定时运行脚本
- ubuntu设置开机自动登陆与登录自动运行脚本
- 利用ubuntu将.cpp生成二进制的可执行文件,然后利用.bat(脚本)编写命令,将可执行文件在android机上运行
- ubuntu登录自动运行脚本
- Ubuntu启动自动运行脚本的方法
- Fedora 下 crontab自动运行定时脚本
- ubuntu下开机自动运行脚本、定时运行脚本
- ubuntu下开机自动运行脚本、定时运行脚本