您的位置:首页 > 运维架构 > Linux

linux计划任务

2015-09-08 21:55 465 查看

1、总结Linux系统上的任务计划(at、crontab)的详细使用方法

linux上的任务计划

任务计划:
在未来时间点一次性执行某任务:at batch
周期性执行某任务:crontab

电子邮件服务:
smtp:简单邮件传输协议 simple mail transmission protocol
/var/spool/mail/USERNAME(存放某个用户邮件的文件)
本地邮件服务(25端口)默认会开启,发送
pop3:邮局协议
imap4:互联网访问协议,从收取网络上收取邮件

mail命令:

默认进入交换式邮件收发接口(打开邮件箱),输入邮件编号查看邮件内容

-s “” 双引号内生邮件主题,邮件正文需要交互式提供
mail -s “hi” root@local

输入重定向可以将文件内容作为邮件内容发送
mail -s “hi” root@local < /PATH/TO/SOMEFILE

利用管道为邮件提供内容
COMMAND | mail -s “hi” root@local

at命令:

承载未来某时间运行的某作业:
支持使用作业队列:
默认为a队列
作业队列只能为a,b单个字符

在mail交互式接口下ctrl+d提交作业

at 【option】。。。TIME
TIME:
(1)绝对时间:
HH:MM
MMDD[CC]YY,MM/DD/[CC]/YY,
指下一个时间点到来的时间执行
tomorrow 标注明天某时间点
(2)相对时间
now+#UNIT
minute,hour,day,week
(3)模糊时间
midnight 00:00
noon 12:00
teatime 16:00

常用选项:
-q QUEUE: 指定at作业的队列名
-f /PATH/TO/SOMEFILE 从指定的路径计划执行文件
-l 查看指定的作业队列中的等待运行的作业列表
at -q b -l
-c 查看待运行作业的
-d:删除指定作业相当于atrm

在at作业中提交中的命令建议使用绝对路径

batch
执行时间由系统自行选择在资源较为空闲时运行指定的任务

crontab:周期性任务计划

守护进程:crond 系统启动后便一直运行在后台,随时监控着任务表上任务的执行时间点是否到了

周期性任务有两类:
(1)系统cron任务:没有默认运行用户身份,所以需要额外指定运行者 存在于/etc/crontab
# 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
7个字段:
前5个字段:时间点
user-name: 以哪个用户的身份运行任务
command to be executed: 要运行任务

(2)用户cron任务:由某个用户提交,默认
存在于/var/spool/cron/USERNAME
文件中的某些命令可能是带有机密性的,不允许用户查看
不建议使用 vim命令查看
建议使用crontab命令

# 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
# | | | | |
# * * * * * command to be executed
5个时间点:
分钟:有效取值范围0-59;
小时:0-23
日:1-31
月:1-12
周几:0-7
注意:几月几号与周几,不建议同时使用;
时间表示法:
*: 对应时间点有效取值范围内的每个时间点;
-: 一个特定连续时间范围, 3-7
,:一个离散的时间点, 3,5,7
/#:有效时间范围内的每多少时间;用于指定频率;
1-30/4, */4
5 */3 * * * /bin/echo "howdy"
5 7 * * 1-5 /bin/echo "howdy"

crontab命令:
crontab [-u user] [-l | -r | -e]
-u user: 不是管理自己的cron任务,而是指定的目标用户的cron任务;仅root拥有管理其它用户的cron任务的权限;默认管理自己的;
-l: list,列出任务;
-r: remove, 移除所有任务;
-e: edit,编辑,打开一当前shell会话的默认编辑器来编辑cron任务表;
补充性的工具:anacron:
注意:
(1) 如果不想接收任务执行结果的通知邮件:
COMMAND > /dev/null
COMMAND &> /dev/null
(2) 对于crontab文件来讲,%有特殊功用;如果命令中会出现%, 要记得转义,或者用单引号对其引用;
(3) crontab的PATH变量与用户的变量不完全相同,所以,建议在cron中的任务要使用绝对路径

2、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD;

20 3 * * 1-6 /bin/cp -Rf /etc/* /backup/etc-'date +$F'

3、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;

30 02 * * *
/bin/cp
/etc/fstab   /backup/fstab-
$(
date
+%Y-%m-%d-%H-%M-%S)

4、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线;

might /bin/echo '=======' >> /statistios/meminfo.txt && /bin/egrep '^[S|M]' /proc/meminfo >> /statistios/meminfo.txt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 周期性