关闭

任务调度命令crontab

891人阅读 评论(0) 收藏 举报
分类:

最近使用到crontab命令,用它来进行作业的定时自动提交,遇到了一些问题,最后解决了。记录一下~~

(1)首先将要执行的文件打成jar包  MongoConf.jar,放到/home/auto目录下面,建立脚本文件MongoConf.sh,建立日志文件run.log存储产生的日志信息。

(2)编辑MongoConf.sh

<span style="font-family:Microsoft YaHei;font-size:14px;">#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/bin:/sbin:/usr/sbin:/usr/bin
cd /home/auto/
/home/jdk1.6.0_31/bin/java -jar MongoConf.jar -cp /home/jdk1.6.0_31/lib/tools.jar:/home/jdk1.6.0_31/lib/dt.jar</span>

注意此处路径要按照自己机器jdk实际路径写,写完后可以./MongoConf.sh先测试下脚本是否能正常运行;

(3)设置系统变量crontab

crontab常用的三个命令

查看cron是否在运行:service cron status

显示当前通过crontab设定的所有任务调度:crontab -l

编辑任务配置文件:crontab -e

删除任务:crontab -r (会删除所有的任务)

配置文件:/etc/crontab

//(试了好多次,改了/etc/crontab 和 crontab -e 不知道是哪个起作用了,都改成一样的噢啦)

使用命令

<span style="font-family:Microsoft YaHei;font-size:14px;">crontab -l</span>
发现no crontab for root

然后使用命令

<span style="font-family:Microsoft YaHei;font-size:14px;">crontab -e</span>
出现no crontab for root – using an empty one


a:然后会叫你“Select a editor ……”下面有几个选项,就是叫你选择编辑器,选择vi(我的木有这项)
进入crontab编辑页面之后就直接”shift+:”,然后输入wq保存即可。

b:我使用的这项。crontab默认选择nano编辑器是可以编辑的 但是一旦选错了就瞎了~ 错误代码no crontab for root - using an empty one 解决 修改crontab默认编辑器为vi或者其他的编辑器。 法一:export EDITOR="/usr/bin/vim" ; crontab -e 法二: 执行命令:select-editor ...

然后一个新的crontab就生成了。

(假设用户为root,在ubuntu中计划任务配置文件是/var/spool/cron/crontabs/root中)

(4)按照crontab的语法写自己要运行的程序。

00 01 * * * /home/auto/MongoConf.sh >>/home/auto/run.log 2>&1 &

(5)重新启动crontab服务

service cron  restart

(6)终止任务  crontab -r


如何调度多个任务?

(1)在crontab -e 中直接写

局限性:多而乱

(2)可以把所有的任务写入到一个可执行文件,即.sh文件(shell编程)

* * * * /home/auto/task.sh

同一个时间执行多个任务


crontab在php中的应用:


(1)在Crontab中使用URL执行脚本

当我们需要定时去调用某个本机的或者是远程的web程序时,可以这样设置crontab
0 5 * * * /usr/bin/curl   http://www.xmsdn.net/it-net/linux/linux-curl-crontab

此处  ”0 5 * * * ”  表示每天早上的5点钟定时访问上面的url 链接,将其加入到你的 crontab 替代文件中.

也可以使用lynx和wget

00 * * * * lynx   -dump http://www.jb51.net/myscript.php 

*/10 * * * * /usr/bin/wget     -q -O temp.txt http://www.jb51.net/myscript.php 


(2)当我们需要定时执行某个系统内的php脚本程序时,可以这样设置crontab
* 19 * * *  /usr/local/php/bin/php    /var/www/test.php   

此处表示调用php(因为是安装在"/usr/local/php/bin"这个目录下),每天的下午7点执行web目录下test.php

*/5 * * * * www /usr/local/php/bin/php /data/project/project_test.php >>/dev/null 2>&1

即每隔5分钟以www用户身份执行/data/project/project_test.php文件,注:PHP程序的执行需要Apache用户(比如www:www)的支持,所以这里的用户建议是www用户,即运行Apache的用户;当然了,www用户对此php是有755权限。
>>/dev/null 2>&1 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息,防止/var/spool被大量垃圾信息占满,影响磁盘的正常运作。




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:75654次
    • 积分:1353
    • 等级:
    • 排名:千里之外
    • 原创:54篇
    • 转载:62篇
    • 译文:0篇
    • 评论:2条
    最新评论