定时任务


第1章  定时任务

1.1 .定时任务的作用

定时任务相当于闹钟

在什么时间做什么事情(执行什么命令/脚本)

 

1.2 .定时任务分类

①atd                       运行一次 仅一次。

②anacron               非7*24小时运行的服务器

③crond(crontab)    常用的定时任务软件 软件包cronie   

 如何检查软件是否安装

.rpm  Linux rpm软件管理命令
   -q   --query 查询
   -a   --all 所有 
   -l   --list 
   -qa  查看软件是否安装
   -ql  显示软件里面的内容
   -qf  查询某个命令/配置文件属于哪个软件包

 

[root@lishichao ~]# which ip

/sbin/ip

[root@lishichao ~]# rpm -qf /sbin/ip

iproute-2.6.32-54.el6.x86_64

[root@lishichao ~]# rpm -ql iproute

rpm -ivh 软件包.rpm  安装rpm包

 

   系统光盘中                                     

 

1.3 CRON分类

1.3.1 系统定时任务

/etc/cron.hourly              系统定时任务每个小时运行目录里面的内容

/etc/cron.daily                系统定时任务每天运行目录里面的内容

/etc/cron.weekly            系统定时任务每周小时运行目录里面的内容

/etc/cron.monthly          系统定时任务每月运行目录里面的内容   

系统会自动运行里面的内容, 系统中毒的时候查看这些系统文件

 /etc/cron.deny  

/etc/crontab                系统定时任务的配置文件之一

 

1.3.2  系统定时任务+logrotale命令 完成对日志切割/日志轮询

  /var/log/cron               定时任务文件

  /var/log/messages      系统默认日志文件

  /var/log/secure           用户登录信息

 

1.3.3用户定时任务

crontab –l (list)列表  查看用户的定时任务

crontab –e (edit)编辑  编辑用户的定时任务

/var/spool/cron/root (root是用户名 root用户的定时任务)   一个命令+一个目录

 

1.4 定时任务的使用

1. 定时任务依赖的软件(服务)-是否能用

 

 

 现在能用(crond进程正在运行),重启后也能用(crond开机自启动)  pid 进程号码

 ps –ef |grep crond

 

2. crontab 命令怎么使用

 crontab  -e          编辑当前用户的定时任务  相当于   vi /var/spool/cron/root

 crontab  -l          显示当前用户的定时任务  相当于   cat  /var/spool/cron/root

当前是 root用户用

crontab命令 1.有语法检查功能 格式不对有提示 2.方便

 

 

3. 定时任务相关文件

 var/log/cron             定时任务的日志文件  运行过程的一个记录

 var/spool/cron/          每个用户的定时文件

 /etc/cron.deny           那些用户禁止使用定时任务-定时任务黑名单

 

 

4. 定时任务格式

          *   *   *   *   *                                            口诀  什么时间做什么,然后想在下一次什么时间在执行

         分时日月周                                               注意!!  不要把星期几和日期同时加上

         

 

5. 定时任务常用符号

 *每     *  *  *  *  *

 /n     */10 * * * *  每隔10分钟

 -      07-09 
 ,      分割

 %      在定时任务中 % 有特殊含义  相当于回车  需要\转义

 

   ##每天的上午8点30分

   30 08 * * * 

 

   ##每天晚上12 

 00 00 * * * go to bed

 

  ##每天的上午7点到上午11点 每一个小时运行CMD命令

 00  07-11 * * *  CMD

 

 ##每天 17点 19 点 20点

 00 17,19,20 * * *

 

 

 

 

 

 

6.  定时任务书写流程

 

    01. 命令行测试  把你的名字显示到文件中

 

 

    02. 把命令放入到脚本中、测试是否可以使用   现在的统一脚本位置  /server/scripts

 

 

    03. 写定时任务 (1.先设置每分钟执行 查看定时任务是否执行成功 2.成功后改为要求的时间)

  ##注意加上注释  说明这个定时的内容

 

 

    04. 检查结果

tailf /var/log/cron        查看日志实时更新

cat /root/oldboy.txt     查看文件内容是否增加 命令是否执行成功

 

 

 

 

 

 

1.5 定向为空

 /dev/nuli

        把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失.  /dev/null对命令行和脚本都非常的有用    

 

       定时任务中-命令或脚本结果(正确或错误)定向到黑洞或追加到文件

 > /dev/null 2>&1  错误的正确的都存放进去
追加到文件中   >> /tmp/time.log 2>&1

 

 

 

   故障案例

   如果没有定向到空 或追加到文件

  1.  postfix开启的时候,系统会不断的给你发邮件      /var/spool/mail/

        You have new mail in /var/spool/mail/root      系统邮件目录 创建一个用户默认就创建一个邮件文件

 

       etc/init.d/postfix  stop(关闭) start(开启)  status查看

      工作中发邮件的软件 一般是关闭的 postfix(centos 6)  sendmail(centos 5)

 

 

 2.  postfix关闭  邮件会存放在邮件的临时目录(/var/spool/postfix/maildrop)

      如果定时任务规则结尾不加 >/dev/null  2>&1

      或者追加到文件中              >>/tmp/oldboy 2>&1

 

      一个邮件创建一个文件会造成大量的小文件,很容易导致硬盘inode空间被占满,从而系统服务不正常

  

  3. 如何删除大量小文件

 echo {1..450000}.txt

 ls *.txt |xargs rm     Argument list too long 参数列表太长  系统忙不过来

 

  01. 缩小范围一点点删除  ls 1*.txt|xargs rm 或 ls *.txt|xargs –n数字 rm

  02.  删除目录  记录好目录权限和所有者

 

 

1.6 环境变量故障案列

http://blog.51cto.com/oldboy/1541515  inux定时任务生产java服务无法执行问题群友案例

 

 

1.  定时任务在运行脚本的时候,只认识很少的几个路径   /usr/bin    /bin

     定时任务脚本中的程序文件 要用绝对路径

2.  在写脚本时候 在开头重新定义了环境变量 PATH  把定时任务不认识命令的绝对路径写进去

 

 

查询脚本执行过程  -x

 

 

1.7 查看定时任务日志内容

 1. head/tail

 2. grep

 3. less   查看文件    一页一页  显示/查看

          下一页  空格  上一页 b   退出 q    

 4. less/more  只能往下查看   不支持快捷键   到最后一行自动退出

 

                                                                                

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM