码迷,mamicode.com
首页 > 系统相关 > 详细

20150905 Linux任务计划

时间:2015-09-07 01:55:31      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:blank   target   周期性   linux   计划   

  • 任务计划

    在未来时间点一次性执行某任务 at,batch

    周期性执行某任务:crontab

    at和crontab实现以邮件服务发给系统

    目前系统每个用户都有邮件地址,邮件服务会启动25 port ss -tnl

     下图为127.0.0.1:25,只能够给本机本身

技术分享

  • 电子邮件服务:

定义:

   smtp:simle mail transmision protocol 邮件发送

   /var/spool/mail/USERNAME :每个用户都有邮箱服务

技术分享

   pop3:post office protocol 邮件接收

   imap4:收邮件internet mail access prococol

   mail命令使用:control+d提交

命令格式

NAME

   mailx - send and receive Internet mail

SYNOPSIS

mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account] [-S variable[=value]] to-addr . . .

mailx [-BDdeEHiInNRv~] [-T name] [-A account] [-S variable[=value]] -f [name]

mailx [-BDdeEinNRv~] [-A account] [-S variable[=value]] [-u user]

        直接mail: 进入交互式邮件收发接口

mail -s "subject" username@hostnmae 邮件内容要交互式提供

输入重定向 mail -s "subject" username@hostname< /path/from/somefile

command| mail -s "subject" username@hostnmae

示例

mail -s "hi" root@localhost -s表示标题

技术分享

  • at命令

   承载未来时间运行的某作业,支持使用作业队列方式

默认队列标识符a后面可以为相对时间或绝对时间

    at now+3minute 在后面后三分钟(指提交任务)

     control+d提交任务

技术分享

命令格式:

    at [-V] [-q queue] [-f file] [-mMlv] timespec...

    at [-V] [-q queue] [-f file] [-mMkv] [-t time]

   at -c job [job...]

   atq [-V] [-q queue]

   at [-rd] job [job...]

   atrm [-V] job [job...]

     -q queue at作业队列

      -f /path/from/somefile:从指定位置文件中读取要运行的作业

      -l 查看作业队列中等运行作业列表,相当于atq

      -c at_job_num:查看待运行作业的内容

   mail建议使用绝对路径

       -d 删除 at -d 3 删除第三个队列的 相当于atrm

  • at的时间表示方式

(1)绝对时间:HH:MM

MMDD[CC]YY,MM/DD[CC]YY,DD.MM[CC]YY or [CC]YY-MM-DD

tomorrow明天

(2)相对时间now+=unit    minute,hour,day,week

(3)模糊时间 midnight 午餐 moon teatime下午4点

at 15:35 后面为交互式

技术分享

At -l显示当前队列 a 队列,

技术分享

  • Batch:

     由系统自行选择在资源较为空间时运行指定的任务,与at基本类似

  • Crontab

  周期性任务计划,at只能够在某个时间点运行一次

  crontab需要通过使用守护进程 crond( 检查时间表是否应该运行一次)

  crond以管理员运行

周期性计划有二类:

(1)系统cron任务,无默认运行用户身份,需要额外运行者 /etc/crontab中直接

VIM命令,不推荐使用

      [root@centos71 mail]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# 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

共七个字段组成:前五个字段时间点

    user-name:以那个用户的身份运行任务

    command to be executed要运行任务

(2)用户cron任务,由某个用户提交,默认以提交者运行,无需要额外指定运行者

/var/spool/cron/USERNAME与用户同步、不建议使用VIM

crontab命令:建议,编辑自己的守护任务

用户只有6个字段,与系统相比无用户

[root@centos71 mail]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# 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

# | | | | |

# * * * * * command to be executed

5个时间点      分钟:有效范围0-59

                       小时:0-23

                      日(每个月内日期)1-31

                      月 1-12

                      周几(0-7)

       注意:几月几号与周几,不建议同时使用

         例如3月6日,周2,并不是每年3月6日为周2

6 * * * * *表示每的,五个之间与的关系,要同时满足

大时间点取星号(每个范围可用值)

时间点表示法:

    *:对应时间点有效取值内的每个时间点

   6 : 数字本身为既定时间点 如6表示6分(每天)。。

   - :一个特定连续时间范围3-7

   , :表示一个离散的时间3,5,7 (如分钟表示3,5,7,分钟)

   /# : 有效时间范围内的每多少时间 用于指定频率

  1-30/4 表示 1-30内每4分钟一次 */4每4小时一次

示例

   5 */3 * * * /bin/ech "howdy" 每三小时运行一次后面的命令 :备注:第1位需要指定数值,才有每之意

   5 7 * * 1-5 周一周五,每点7点5分,运行后面任务

执行结果以邮件方式发送给客户  /bin /usr/bin /sbin /usr/sbin

    controntab只能使用以上路径的使用,建议使用绝对路径

技术分享

      crontab命令

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

              -u user:不是管理自己的cron任务,而是指定的目标用户

              -l列出任务

              -e 默认是vim编辑器

              -r 清空所有任务

               只能以管理员查看所有

      示例:

1、实现实现每8分钟运行一次任务? 要整除无精确时间运行,最后一次可以不同

这里*/8 60/8 无法整除,剩4,解决sleep

2、每10秒运行一次任务?crontab只支持分钟,不支持秒,要使用sleep命令

补助工具:anacron 定期检查任务,如果指定时间未执行,不管是否在

时间点,要立即或指定时间运行一次!,默认未启动!服务器中未执行

技术分享

注意:如果不想接受任务执行结果的通知邮件

command>/dev/null 成功

command &>/dev/null 不管是否成功

(2)对于crontab文件中有%有特殊功能,如果使用中出现%,需要使用转义,或用单

引号‘ ‘对其引用‘%‘

(3)crontab的path变量与用户的变量不完全相同,所以建议在cron的任务要使用绝对路径

如果使用可考虑使用export

Cat /etc/crontab

技术分享

  • 练习:

1、每周1至周六的凌晨3点20分,运行tar命令对/etc/目录进行归档另存

存储位置为/backup/etc-yyyy-mm-dd.tar.xz

         xz /path/to/somefile  

              -d  解压    xz –d test.tar.xz

              -#:1-9 默认是6

              -k:压缩时保留文件

         tar实现归档工具,只归档不压缩  cf  xf  tf

              -c创建归档文件

              -f 后面必须有参数,指定文件名,文件名为*.tar

              -x展开归档

                   --xattrs在归档同时保护其扩展属性信息

              -t不展开归档,直接查看归档了那些文件

          归档后压缩  xz  文件名.tar 

               -zcf 直接调用即归档再压缩,调用gzip

               -zxf  调用gzip解压缩并归档

               -jcf: bzip2  直接调用即归档再压缩

               -jxf:

               -Jcf:xz  直接调用即归档再压缩

               -Jxf:  直接调用即归档再压缩

         

tar -jcvf /tmp/51ctobak/etc-`date +%Y-%m-%d`.tar.xz /etc  

   其中“+%Y-%m-%d”可以使用%F
   crontab时间格式:  20 3 * * 1-6

2、每周日凌晨2点30分,运行cp命令对/etc/fstab进行文件备份,存储位置为

/backup/fstab-yyyy-mm--dd-hh--mm-ss

    cp -a /etc/fstab /tmp/51cto/fstab-`date +%Y-%m-%d-%H-%M-%S`

    crontab时间格式   30 2 * * 7

3、每天晚上12点,取得/proc/meminfo文件中所有以s或m开头的行,追加至

/statistics/meminfo.txt文件中且每天的消息之前,要加上类似===============分隔线;

grep -o ‘^[S,M].*‘ /proc/meminfo 以S或M开关的行

   sed -i "1i ===============" meminfo.txt |grep -o ‘^[S,M].*‘ /proc/meminfo>/statistics/meminfo.txt

输出:

技术分享

    编辑crontab时间格式   0 0 * * *

技术分享

  运行一天,查看结果

20150905 Linux任务计划

标签:blank   target   周期性   linux   计划   

原文地址:http://wangsongbin.blog.51cto.com/1130001/1692099

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!