Linux计划任务
2016-12-19 18:19
260 查看
简单计划任务
at
at 命令在特定时间执行特定任务语法为:at [option] TIME
[option] 常用选项:
-q QUEUE:使用指定的队列,缺省值为 a
QUEUE范围为a-z,A-Z
-l:列出指定队列中等待运行的作业;想当于 atq
-d:删除指定的作业;相当于 atrm
-c:查看具体作业任务
-f:/path/from/somefile:从指定的文件中读取任务
TIME格式:
HH:MM [YYYY-mm-dd]
noon,midnight,teatime
tomorrow
now+# {minutes, hours, days, OR weeks} (# 号代表数字)
新增计划任务
[root@2w3i-Cs ~]# at -q a now+5 minutes at> echo "Hello at" at> <EOT> //输入完任务后,使用 Ctrl+D 提交 job 3 at 2016-12-15 16:23
查看任务列表
[root@2w3i-Cs ~]# at -l 3 2016-12-15 16:23 a root
注意
作业的执行结果以邮件通知给相关用户
batch
该命令无须指定时间,系统会自行选择空闲时间去执行指定任务周期性计划任务
crontab
crontab 命令将计划要周期性执行的任务提交给crond,由其来实现到点运行系统cron任务
系统维护作业/etc/crontab
/etc/crontab 格式如下
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # 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
例如:想在 每天21点18分运行date命令,在该文件末尾添加如下格式的文本
# 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 18 21 * * * root date > /root/test.txt
用户cron任务
crontab 命令 即编辑的 每个用户的cron任务文件每个用户都有专用的cron任务文件位置:/var/spool/cron/USERNAME
语法:
crontab [-u user] [-l | -r | -e] [-i]
-l:列出用户所有任务
-e:编辑用户的cron任务
-r:移除所有任务
-i:同 -r 一同使用,以交互式模式让用户有选择地移除指定任务
-u user:仅root可运行,代为为指定用户管理cron任务
例如:想在 每天21点18分运行date命令,执行如下命令
[root@2w3i-Cs ~]# crontab 18 21 * * * root date > /root/test.txt [root@2w3i-Cs ~]# crontab -l 18 21 * * * root /bin/date > /root/test.txt [root@2w3i-Cs ~]# cat /var/spool/cron/root 18 21 * * * root /bin/date > /root/test.txt [root@2w3i-Cs ~]#
Tip:
输入完成后 使用 Ctrl + D 提交, 使用 Ctrl + Backspace 进行退格操作
注意
运行结果以邮件通知给相关用户;
对于cron任务来讲,%有特殊用途;如果在命令中要使用%,则需要转义;不过,如果把%放置于单引号中,也可以不用转义;
Cron任务格式说明
各字段意义
* * * * * user-name command to be executed
如上所示共有7个字段
第1个字段 表示 分钟 (minute) 允许范围 (0 - 59)
第2个字段 表示 小时 (hour) 允许范围 (0 - 23)
第3个字段 表示 天 (day of month) 允许范围 (1 - 31)
第4个字段 表示 月 (month) 允许范围 (1 - 12) 或者使用 jan,feb,mar,apr …表示
第5个字段 表示 星期 (day of week) 允许范围 (0 - 6) 或者使用 sun,mon,tue,wed,thu,fri,sat 表示
第6个字段 表示 用户名(user-name)即会用指定用户名环境变量执行
第7个字段 表示 执行的命令(command to be executed)
时间表示法
(1) 特定值给定时间点有效取值范围内的值
如:minute (0 - 59), hour (0 - 23),…,等
(2) *
给定时间点上有效取值范围内的所有值
表示”每…”,如:每分钟,每小时,…,等
(3) 离散取值
#,#,#
表示特定时间点
如在minute下 3,6,10
则表示 第3分钟 第6分钟 和 第10分钟
(4) 连续取值
#-#
表示特定时间范围
如在hour下 3-7
则表示 从3点到7点
(5) 在指定时间范围上,定义步长
/#
如 month 下 /3 表示每隔3个月
练习
1.每4小时备份一次/etc目录至/backup目录中,保存的文件名称格式为“etc-yyyy-mm-dd-HH.tar.xz”* */4 * * * root /bin/tar -cvJf /backup/etc-$(/bin/date +%Y-%m-%d-%H).tar.xz /etc/ > dev/null 2>/root/error.txt
2.每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”
* * * * 2,4,7 root /bin/cp /var/log/messages /logs/messages-$(/bin/date +%Y%m%d)
3.每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中
* */2 * * * root /bin/cat /proc/meminfo | /bin/grep -i ^[SM] >> /tmp/meminfo.txt
4.工作日时间内,每小时执行一次“ip addr show”命令
* */1 * * 1-5 root /usr/sbin/ip addr show
注意
此处使用的 指定用户名 为 root, 则使用该用户的cron服务
执行命令切记一定为绝对路径
如 执行date 为 /bin/date
相关文章推荐
- linux 执行计划任务
- LINUX下的crontab计划任务
- linux下定时计划任务,经测试备份数据库有效
- linux crontab 计划任务
- linux下启动informix服务-计划任务
- 【原创】Linux计划任务--at命令
- Linux:计划任务之at
- Linux Crond执行计划任务
- Linux计划任务,自动删除n天前的旧文件
- linux下的计划任务
- linux系统下oracle计划任务脚本
- windows计划任务和linux计划任务
- Linux系统文件的归档与备份与计划任务配合使用
- Linux下使用crontab来执行定时任务计划
- RHCE课程-RH131Linux管理笔记四-Linux的计划任务
- linux 计划任务管理 起动java应用程序
- linux 任务计划
- RHCE课程-系统管理部分|4、linux的计划任务
- 每天一个知识点linux(十一)任务计划
- Linux:计划任务之cron