linux定时任务,让你更深入的了解系统( 二 )


· 取所有值
给定时间点上有效取值范围内的所有值;表示"每xxx"的含义;
· 离散取值
在时间点上使用逗号分隔的多个值;
x,y,z
例如:
0 8,20 * * 3,7:这种不建议;(出现了20号,又出现了每周3,周天);
9 8 * * 3,7:每周三和周日执行的8点9分执行;
· 连续取值
在时间点上使用符号短破折号"-"连接开头和结束
x-y
例如:
0 9-18 * * 1-5:周1到周5,每天的9点到18点,执行;(假设上午9点上班,下午18点下班,双休,这就是
工作日执行要执行的任务)
· 步长取值
在指定时间点上,定义步长:
/number :其中number表示步长;
指定的时间点不能被步长整除时,其意义将不复存在;
最小时间单位为"分钟",想要完成"秒"级别任务,需要额外借助于其他机制,例如
可以定义每分钟定时计划任务,再利用脚本实现在每分钟之内,循环执行多次;
例如:
*/5 * * * *:每5分钟执行一次;
* */1 * * *:每1小时执行一次;
* * */5 * *:每5天执行一次;
*/7 * * * *:这个并不完全是每7分钟执行一次,这种不整除的现象,不建议使用 。
cron定时任务示例1、每12小时备份一次/etc目录至/backups目录中,保存文件 名称格式为"etc-yyyy-mm-dd-hh.tar.xz"要添加的任务计划为:
* */12 * * * /usr/bin/mkdir -p /backups >/dev/null && /usr/bin/tar -JPcvf /backups/etc-`date '+%Y-%m-%d-%H'`.tar.xz /etc >/dev/null
*
2、每周2、4、7备份/var/log/secure文件至/logs目录中,文件名格式为"secure-yyyymmdd";
要添加的任务计划为:
* * * * 2,4,7 /usr/bin/mkdir -p /logs >/dev/null && tar -JcvfP /logs/secure-`date +%Y%m%d`.tar.xz /var/log/secure >/dev/null
3、每两小时取出当前系统/proc/meminfo文件中以S或M开头的行信息追加至/tmp/meminfo.txt文件中;
* */2 * * * /usr/bin/grep -E '^(S|M)' /proc/meminfo >> /tmp/meminfo.txt
4、制定每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00;
我的脚本内容为:
[root@node2 ~]# cat /var/tmp/print_dtime.sh
#! /bin/bash
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
LANG="en_US.UTF-8"
export PATH LANG
source /etc/profile
shopt -u expand_aliases #关闭 bash alias 扩展
echo `date +'%Y-%m-%d %H:%M:%S'`
[root@node2 ~]#
定时任务计划为:
10 3,5 * * 3 bash /var/tmp/print_dtime.sh

【linux定时任务,让你更深入的了解系统】


推荐阅读