linux定时任务查看添加,linux下添加crond定时任务

一.crond命令

crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

/sbin/service crond start    //启动服务

/sbin/service crond stop     //关闭服务  /sbin/service crond restart  //重启服务

/sbin/service crond reload   //重新载入配置

/sbin/service crond status   //查看服务状态

crond读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

crond的配置文件称为“crontab”,是“cron table”的简写。

二.crond在3个地方查找配置文件1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。2、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。3、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

三.权限crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在用法如下: 1、如果两个文件都不存在,则只有root用户才能使用crontab命令。 2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。 3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。 4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。

四. crontab命令

crond服务提供crontab命令来设定crond服务的,以下是这个命令的一些参数与说明:

crontab -u //设定某个用户的crond服务,一般root用户在执行这个命令的时候需要此参数

crontab -l //列出某个用户crond服务的详细内容

crontab -r //删除某个用户的crond服务

crontab -e //编辑某个用户的crond服务

比如说root查看自己的crond设置:crontab -u root -l

再例如,root想删除fred的crond设置:crontab -u fred -r

五.配置crontab

可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件

具体格式如下:

Minute Hour Day Month Dayofweek   command

分钟     小时   天     月       天每星期       命令

每个字段代表的含义如下:

Minute             每个小时的第几分钟执行该任务,0-59

Hour                每天的第几个小时执行该任务,0-23

Day                  每月的第几天执行该任务,1-31

Month             每年的第几个月执行该任务,1-12

DayOfWeek     每周的第几天执行该任务,0-6,0表示星期日,也可以用英文来表示,sun表示星期天,mon表示星期一

Command       指定要执行的程序

记住几个特殊符号的含义:

“*”代表取值范围内的数字,

“/”代表”每”,

“-”代表从某个数字到某个数字,

“,”分开几个离散的数字

举例如下:

5       *       *           *     *     ls             指定每小时的第5分钟执行一次ls命令

30     5       *           *     *     ls             指定每天的 5:30 执行ls命令

30     7       8         *     *     ls              指定每月8号的7:30分执行ls命令

30     5       8         6     *     ls              指定每年的6月8日5:30执行ls命令

30     6       *           *     0     ls            指定每星期日的6:30执行ls命令

30     3     10,20     *     *     ls              每月10号及20号的3:30执行ls命令

25     8-11  *           *     *     ls            每天8-11点的第25分钟执行ls命令

*/15   *       *           *     *     ls            每15分钟执行一次ls命令

30      6     */10    *     *     ls               每个月中,每隔10天6:30执行一次ls命令

50      7       *      *     *     root     run-parts   /etc/cron.daily

每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件[ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]

六.crontab中的输出配置

以上的定时任务执行结果都被输出到对应用户的email中,crond支持将执行结果输出到指定文件中

crontab中经常配置运行脚本输出为:>/dev/null   2>&1,来避免crontab运行中有内容输出。

shell命令的结果可以通过‘> ’的形式来定义输出

/dev/null 代表空设备文件

> 代表重定向到哪里,例如:echo     "123"     > /home/123.txt

1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"

2 表示stderr标准错误

& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

那么重定向输出语句的含义:

1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。

2>&1 表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

例1:每天5:30执行ls命令,并把结果输出到/jp/test.log文件中

30     5     *     *     *     ls     >/jp/test.log     2>&1

七.crontab与环境变量不要假定crond知道所需要的特殊环境,它其实并不知道。所以你要保证在要执行的shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

1、脚本中涉及文件路径时写全局路径;

2、脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:    cat start_cbp.sh#!/bin/sh

source /etc/profile

export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

/usr/local/jboss-4.0.5/bin/run.sh -c mev &

3、当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:0     *     *     *     *     . /etc/profile;/bin/sh     /var/www/java/audit_no_count/bin/restart_audit.sh

八.其他应该注意的问题1、新创建的crond job,不会马上执行,至少要过2分钟才执行。如果重启crond则马上执行。2、

每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB

命令后面进行重定向处理是非常必要的: >/dev/null  2>&1 。前提是对 Job

中的命令需要正常输出已经作了一定的处理,

比如追加到某个特定日志文件。3、当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行报错    tail -f /var/log/cron。4、千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。5、在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。

附录:

http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html

http://blog.csdn.net/dancen/article/details/24355287

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值