相关命令:at、batch、cron、mailx
未来某时间执行一次任务:at, batch
周期性运行某任务: cron
一、未来某时间执行一次任务:at命令
at, batch, atq, atrm - 排队、检查或删除以后要执行的作业
常用用法: at [option] TIME TIME: HH:MM [YYYY-mm-dd]: 指明时间 noon,midnight,teatime: 中午十二点,午夜十二点,下午四点 tomorrow now+#{minutes,hours,days,OR weeks}: 某段时间后 常用选项: -q QUEUE: -l: 列出指定队列中等待运行的作业,相当于atq -d: 删除指定的作业,相当于atrm -c #: 查看具体某一条作业任务 -f /path/from/somefile:从指定的文件中读取任务
注意: 作业的执行结果以邮件形式通知给相关用户
邮件相关命令: mailx
mailx - send and receive Internet mail
邮件存放位置:/var/spool/mail
常用用法: mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account]
[-S vari‐able[=value]] to-addr . . .
简单用法:mailx [-s 'SUBJECT'] username[@hostname]
例1: # mailx -s 'hello' [email protected]
邮件内容
Ctrl + d //发送邮件
# mail //查看当前用户邮件
& 数字# //查看第几封邮件
& delete #: //删除第几封邮件
& q //退出
例2:# mailx -s 'SUBJECT' [email protected] < mail.txt //使用重定向的方式发送邮件给hadoop用户
batch命令: 让系统自行选择空闲时间取执行此处指定的任务 //很少让系统自己去选择时间执行任务
二、周期性任务计划:cron命令
相关程序包:
cronie:主程序包,提供了crond守护进程及相关辅助工具
cronie-anacron: cronie的补充程序,用于监控conie任务执行计划,如果cronie中的任务在过去该运行的时间点未能正常运行,
则anacron会随时启动一次此任务
crontabs: 包含CentOS提供系统维护任务
确保crond守护进程处于运行状态:
CentOS7: systemctl status crond //如果未运行,则运行进程: systemctl start crond CentOS6: service crond status //如果未运行,则运行进程: service crond start
计划要周期性执行的任务提交给crond,由其来实现到点运行。
系统cron任务: /etc/crontab
用户cron任务: crontab命令
系统cron任务
# 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
例如: 每天晚上九点十分运行echo命令:
10 21 * * * gentoo /bin/echo "how are you!"
时间表示法
1.特定值:给定时间点有效取值范围内的值 2.*:给定时间点上有效取值内的所有值,表示“每...” 3.离散取值,#,#,# 4.连续取值:#-# 5.在指定时范围上,定义步长:/#,比如分钟上设置/3表示每3分钟执行
例如:每3小时echo命令 1 */3 * * * gentoo /bin/echo "how"
用户cron:
crontab命令定义,每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME
crontab [-u user] [-l] [-r] [-e] [-i] -l:列出所有任务 -e:编辑任务 -r:移除所有任务 -i:同-r一起使用,以交互模式让用户有选择的移除指定任务 -u user:仅root可运行,代为为指定用户管理cron任务 注意:运行结果以邮件通知给相关用户
如何在秒级别运行任务
sleep NUMBER[SUFFIX]... //s:秒 m:分钟 h:小时 d:天
* * * * * for min in 0 1 2;do /bin/echo "hi";sleep 20s;done
例1:实现每7分钟运行一次任务
* * * * * for min in 0 1 2;do /bin/echo "hi";sleep 7m;done
练习:
1.每4小时备份一次/etc目录至/backup目录中,保存的文件名称格式为“etc-yyyy-mm-dd-HH..tar.zx”
* */4 * * * tar -Jcf /backup/etc-$(date +%F-%T).tar.xz /etc
2.每周2,4,7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd.tar.gz”
* * * * 2,4,7 tar -zcf /logs/messages-$(date +%Y%m%d).tar.gz
3.每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中
* */2 * * * cat /proc/meminfo | grep "^[SM]" >> /tmp/meminfo
4.工作日时间内,每小时执行一次“ip addr show”命令
* */1 * * 0-4 ip addr show