天天看点

linux任务计划

linux中任务计划:

一次性执行:

at,batch

batch:不需要指定时间,会在空闲时间执行

周期性执行:

vixie cron:crontab

我们通常看到的是crontab,crontab实际上是个表格或者说是文件,来为vixie cron的一个进程crond提供配置信息

1、一次性任务执行:

at TIME

at>

Ctrl+d:提交任务

at -l = atq:查看等待执行的任务

at 11:30

noon,midnight,teatime

例:

执行结果以邮件方式发送给任务发起者:

删除尚未执行的任务:

at -d JOB_ID = atrm JOB_ID

# at -d 2 或者 # atrm 2

任务队列

多个

a

at -f /PATH/TO/AT_SCRIPT TIME

2、周期性任务执行

vixie cron

crond:daemon守护进程

/etc/init.d/

uptime:查看当前系统是什么时候启动的,运行多久时间了,并且当前系统负载是什么

crond:配置文件

crontab:

系统cron:/etc/crontab

用户cron:/var/spool/cron/USERNAME

a、运行者身份:

    用户cron:定义者

        6个字段,与系统cron相比,无需指定用户身份

用户cron的定义:

crontab(类似于vim) 执行之后,会保存在/var/spool/cron/目录下一个以当前用户命名的文件

-e:

-r:移除配置文件,删除所有任务

-l:列出周期性任务

-u USERNAME:

crontab -e -u hadoop

系统cron:在配置文件中指定

7个字段

通配符:

        *:相应时间点的所有有效取值

        ,:离散取值

3,10,17,24 * * * * root cat /etc/fstab 每小时的第3分钟,第10分钟,执行这个命令

3,33 * * * * root cat /etc/fstab 每半小时执行一次

/:定义指定取值范围内的频率

*/3 * * * * root cat /etc/fstab 每三分钟执行一次

-:连续取值

                1 8-20/3 * * * root cat /etc/fatab 从8点到晚上8点每三小时的第一分钟执行一次

每两天的早上2点7分将etc下所有文件打包成etc-`date +%F`.tar.xz格式放在backup目录下

7 2 */2 * * root tar -Jcf /backup/etc-`date +%F`.tar.xz /etc/*

周一到周五8点到18点每隔3个小时执行两次

2,32 8-18/3 * * 1-5

b、PATH:

/bin:/sbin:/usr/bin:/usr/sbin

如果是命令:使用绝对路径

如果是脚本:在脚本中自定义PATH

c、拒收邮件

    方法一:

MAILTO=''

    方法二:

        &> /dev/null

以秒为单位执行任务计划:

方法1:

* * * * * /usr/bin/unison webdata 每分钟执行一次

* * * * * sleep 30 && /usr/bin/unsion webdata

方法2:

* * * * * for i in 0 1 2; do some_job & sleep 15; done; some_job

第0秒,循环第一次(第一次执行命令),睡15秒

第15秒,循环第二次(第二次执行命令),睡15秒

第30秒,循环第三次,睡15秒

第45秒,执行最后一个命令

注:使用%时要加反斜线,例:

1 2 3 * * touch ~/file_$(data +\%Y\%m\%d).txt

但使用单引号后可以不再使用反斜线,例:

1 2 3 * * touch ~/file_$(data +'%Y%m%d').txt

继续阅读