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
例:
[root@www:~]# at now+3min at> ls /etc at> date按下Ctrl+d at> <EOT> job 2 at 2015-04-11 21:27 [root@www:~]# at -l 32015-04-11 21:31 a root
执行结果以邮件方式发送给任务发起者:
删除尚未执行的任务:
at -d JOB_ID = atrm JOB_ID
# at -d 2 或者 # atrm 2
任务队列
多个
a
at -f /PATH/TO/AT_SCRIPT TIME
# vim jobs.txt ls /var cat /etc/fstab # at -f jobs.txt 22:00
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个字段
[root@www:~]# cat /etc/crontab # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
通配符:
*:相应时间点的所有有效取值
,:离散取值
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
[root@www:~]# crontab -e MAILTO=‘‘ */2 * * * * echo who [root@www:~]# ls /var/spool/cron/ root [root@www:~]# crontab -e -u hadoop */2 * * * * echo who [root@www:~]# ls /var/spool/cron/ root hadoop
以秒为单位执行任务计划:
方法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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。