每周周天晚上linux计划任务表达式,Linux之计划任务

at, batch, crontab

计划任务特性

1. 需要在指定的某时间段运行

2. 需要将任务结果邮件通知用户

3. 单次任务及循环任务区别

Linux计划任务的实现工具

1. at工具

其只能执行一次性任务

其会自动加载部分环境变量

可以执行命令

可以执行脚本

作业有队列,用单字母表示,默认为a队列

作业计划任务是以绝对序列值进行排序

任务结果会以邮件的形式通知用户

2. batch工具

其使用方法与at工具类似

最大的区别为:它会选择系统在比较空闲的时间段执行任务

3. crontab命令

其可以循环执行任务,实现周期性任务

最小时间单位为分钟,如果需要到秒级别,需要你是用外部机制

可以执行命令

可以执行脚本

每次的任务都会发送邮件至用户通知

其依赖于crond守护进程及相关辅助工具,cronie是其主程序包

一、at工具

synopsis: at [OPTIONS]...time

[time]格式

HH:MM[YYYY-mm-dd]

20:10 2015-10-30

noon : 正午

midnight : 午夜

teatime : 下午4点

tomorrow : 明天

now +# UNIT

UNIT: min,hours,days,weeks

[options]

-l : 列出任务队列,相当于atq命令

-f FILE : 从指定文件中读取作业任务,不用交互式输入

at -f at.sh now+5min

-d # : 删除任务

at -d 3 == atrm 3 :删除第3号任务

-c # : 查看指定任务的内容

-q a|b|c|d : 指定默认队列

二、crontab工具

cron任务的分类

系统cron任务

配置文件

/etc/crontab

配置命令

直接编辑/etc/crontab文件

用户cron任务(root用户也不例外)

配置文件

/var/spool/cron/USERNAME

配置命令

crontab -e

/etc/crontab文件的格式

# .---------------- 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

每一行定义一个周期性任务

此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或自定义path环境变量

执行结果邮件发送给想着用户,即mailto=中定义的用户

普通用户不需要定义mailto参数,因为他的任务文件就以用户名命名

共7个字段

如果命令中有%这类的符号,需要转义,但旋转到单引号中的不用转义

crontab命令:

synopsis - crontab [-u user] [-l | -r | -e] [-i] [-s]

[options]

-e : 编辑任务,建议使用crontab -e,这样可以帮忙检查其错误

-l : 列出所有任务

-r : 移除所有任务,即删除对应/var/spool/cron/USERNAME文件

-i : 交互式,在使用-r删除所有用户时,提示用户确认

-u USER : root用户可以为指定的用户管理、指定任务

注意:运行结果会以邮件方式通知当前用户,如果拒绝接收邮件,可以会导致未备份成功却没有任何消息反馈的情况,建设如下操作:

COMMAND > /dev/null : 将正确结果删除,只返回错误输出并发送邮件至用户

COMMAND &> /dev/null : 不建议此操作

指定的某任务在指定的时间因关机未能执行,下次开机不会自动执行

如果某时间点因故未能按时执行,下次开机后无论是否到了相应时间点,都要补充执行一次,可使用anacron实现

练习:

每12小时备份一次/etc目录至/backups目录中,保存格式为etc-yyy-mm-dd-hh.tar.xz”

01 */12 * * * root tar Jcf /backups/etc-$(date +"\%F-\%H-\%S").tar.xz /etc/

每周2、4、7备份/var/log/secure文件至/logs目录中,文件名格式为 secure-yyyymmdd

01 09 * * 2,4,7 root tar Jcf /logs/secure-$(date +"\%Y\%m\%d") /var/log/secure

每两个小时取当前系统/proc/meminfo文件中以S或M开头的行信息追加至/tmp/meminfo.txt文件中

01 */2 * * * root grep '^[M\|S]' /proc/meminfo > /tmp/meminfo.txt

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值