标签:linux任务计划管理
一、总结Linux系统上的任务计划at、crontab的详细使用方法
1、计划任务说明
在未来时间点一次性执行某任务:at,batch;
周期性执行某任务:crontab;
2、电子邮件服务
计划任务默认以邮件的形式将结果发送给执行任务的用户
mail命令:
mail username(@hostname):进入交互式收发邮件接口
mail -s ‘SUBJECT‘ username@hostname:设置邮件主题
< /path/from/somefile:将文件内容发送给收件人
echo "xxx " | mail -s ‘SUBJECT‘ username@hostname : 将echo 输出结果发送给收件人
3、at命令使用
at [option].....TIME
(1)常用选项
-q QUEUE:at作业队列
-f /path/from/somefile:从指定的文件中读取要运行的作业
-l:查看作业队列中的等运行的作业列表(等于atq命令)
-c at_job_num :查看待运行作业的内容
-d 编号:删除指定作业,相当于at rm
(2)TIME格式
绝对时间:
HH:MM,
MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD
相对时间:
now+#UNIT(now+3minute)
minute, hour, day, week
模糊时间:
midnight,noon,teatime
[root@localhost ~]# /etc/init.d/atd status atd is stopped [root@localhost ~]# /etc/init.d/atd start Starting atd: [ OK ] [root@localhost ~]# at 17:19 at> ls /etc at> cat /etc/fstab at> <EOT> job 2 at 2015-09-08 17:19 You have mail in /var/spool/mail/root
4、batch:由系统自行选择在资源空闲的时候运行指定任务
5、crontab:周期性任务计划
守护进程:crond
[root@localhost ~]# /etc/init.d/crond status crond (pid 1977) is running...
(1)系统cron任务:没有默认运行用户身份,所以需要额外指定运行者
配置文件:/etc/crontab
(2)用户cron任务:由某个用户提交,默认以提交者身份运行(建议使用crontab -e)
配置文件:/var/spool/cron/USERNAME
(3)配置文件字段解析
[root@cwc01 ~]# cat /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
*****:5个时间点:(分 小时 日 月 周几)
分钟:0-59
小时:0-23
日:1-31
周几:0-7
几月几日与周几不建议同时使用
user-name:以哪个用户的身份运行任务
command to be executed:要运行的任务(命令)
实例:
每年:2 3 4 5 *
每月:20 18 6 * *
每天:20 9 * * *
每周:17 16 * * *
每小时:3 * * * *
每分钟:* * * * *
时间点表示法:
1、 *:对应时间点有效取值范围内的每个时间点
2、-:表示特定连续时间范围( 40 3 * * 1-5 command)
3、 ,:表示离散时间点(30 2 * * 2,4,6 command)
4、/#:有效时间范围内的每#个时间单位一次;用于指定频率()
*/3 * * * * command : 每3分钟执行一次
* */3 * * * command : 每三个小时到达时,此小时内每分钟都执行一次
6 */3 * * * command : 没三个小时执行一次
注意:并不能精确到7分钟一次(可使用sleep机制)
(4)crontab命令
crontab [-u user] [-l] [-r] [-e]
-u user: 不是管理自己的cron任务,而是指定的目标用户的cron任务;仅root拥有管理其它用户的cron任务的权限;默认管理自己的
-l:list,列出任务
-r:remove,移除所有任务
-e:edit,编辑,打开一当前shell会话的默认编辑器来编辑cron任务表
注意:
(1) 如果不想接收任务执行结果的通知邮件:
COMMAND > /dev/null
COMMAND &> /dev/null
(2) 对于crontab文件来讲,%有特殊功用;如果命令中会出现%, 要记得转义,或者用单引号对其引用;
(3) crontab的PATH变量与用户的变量不完全相同,所以,建议在cron中的任务要使用绝对路径
/root/bin/a.sh(包括脚本中要使用的命令)
二、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD;
[root@cwc01 ~]# mkdir -pv /backups mkdir: created directory `/backups‘ [root@cwc01 ~]# crontab -e no crontab for root - using an empty one 20 3 * * 1-6 /bin/cp -a /etc /backups/etc-`date +F%`
三、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;
30 2 * * 7 /bin/cp -a /etc/fstab /backup/fstab-`date +F`
四、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线
[root@cwc01 ~]# mkdir -pv /statistics mkdir: created directory `/statistics‘ 0 0 * * * /bin/echo -e "===========\n" >> /statistics/meminfo.txt && /bin/grep "^[S|M]" /proc/meminfo >> /statistics/meminfo.txt
Linux系统上的任务计划相关命令at、crontab的使用方法
标签:linux任务计划管理
原文地址:http://c616531043.blog.51cto.com/1397029/1692918