Linux课程笔记 Crond介绍

1. 定时任务比较及cron语法

Linux的任务调度可以分为两类:

  1. 系统自身执行的任务
  2. 用户执行的工作

Linux系统下另外两种定时任务软件:


at:适合仅执行一次的调度任务,需要启动一个名为atd的服务

anacron:这个命令主要用于非7*24小时开机的服务器,anacron并不能指定具体时间执行任务,而是以天为周期或者在系统每次开机后需要执行的任务,它会检测停机期间应该进行,但是并没有进行的crontab任务工作,执行一遍。

这两种比较少用

指令语法:


Crontab  [-u user] file

Crontab  [-u user] {-l |-r |-e}

指令说明:


通过crontab我们可以在固定的间隔时间执行指定的系统指令或shell脚本,时间间隔可以是分钟、小时、日、月、周及以上的任意组合(日和周不要组合)。

2. 使用者权限文件


文件


说明


/etc/cron.deny


该文件所列用户不允许使用crontab命令


/etc/cron.allow


该文件所列用户允许使用crontab命令


/var/spool/cron


所有用户crontab文件存放的目录,以用户名命名

3. 指令选项说明含义表


参数名称


含义


指定示例


-l(字母)


显示用户crontab文件内容,


crontab  -l


-e


进入vi编辑用户crontab文件


crontab  -e


-i


删除用户crontab文件前确认提示


crontab  -i


-r


从crontab目录中删除用户crontab文件


crontab  -r


-u user


指定使用者


crontab  –u qinbf –l

4. 指令的使用格式

默认情况下,用户所见建立的crontab文件存放于/var/spool/cron文件中,其crontab对应的文件名与用户名一致。

格式共分为七段,前五段为时间设定段,第六段以哪个用户执行crontab(默认是当前用户),第七段为所要执行的命令段。

5. Crontab时间段的含义如表:



含义


取值范围


第一段


分钟


00-59


第二段


小时


00-23


第三段


日期


01-31


第四段


月份


01-12


第五段


星期几


0-6

6. 特殊符号含义如下:


特殊符号


含义


*


表示任意时间都


-


减号,表示分隔符,表示一个时间范围段



逗号,表示分隔时间段的意思


/n


n代表数字,“即每隔n单位时间”

7. crontab依赖的服务:


chkconfig   --list |grep  crond

/etc/init.d/crond  status

8. crontab实例说明


1) 30  3,12  *  *  * /bin/sh /scripts/oldboy.sh

2) 30  */6  *  *  * /bin/sh /scripts/oldboy.sh  #--à第二列*/6表示每6个小时,也相当于6,12,18,24

3)30  8-18/2  *  *  * /bin/sh /scripts/oldboy.sh #-à第二列8-18/2代表早晨8点到下午18点之间每2小时,也相当于8,10,12,14,16,18

4)*  23-7/1  *  *  *  /application/apachectl restart   #----à实际上的效果是,晚上到早上的7点,每小时的每一分钟都重启apache,如果是想达到每小时才重启的话,前面的分钟段,可以设置为0或者30之类的

5)服务器时间同步:系统每5分钟同步一次时间

[[email protected] ~]# crontab -l

*/5 * * * * /sbin/ntpdate time.windows.com  >/dev/dull 2&>1

9. crontab命令生产环境专业写法


例1:每一分钟打印一次自己的名字到/server/log/自己的名字命令的文件中。

答案:

#print char task by oldboy for programmer A at 2010-12-12

*/1  *  *  *  *  echo  “oldboy” >>/server/log/oldboy.log 2>&1

例2:每周六、日上午9:00和下午14:00来老男孩linux运维实战培训中心学习(/server/script/oldboy.sh)

答案:

#cron  job for ett by oldboy 2010-12-12

00       09,14  *  *  6,0  /bin/sh /server/script/oldboy.sh >/dev/null 2>&1

针对以上两生产例子说明:

1写定时任务要写清注释是个好习惯,比如什么人,什么时间,因为谁,做了什么事

2执行任务时可以省略用户,在执行脚本时,尽量带上/bin/sh,否则有可能因为脚本没有执行权限而无法执行

3需要root权限执行的任务可以登录到root用户下然后设置,如果不需要root权限,可以登录到普通用户下,然后设置,这里要注意不同用户的环境变量问题。

4定时任务命令的结尾最好加上>/dev/null 2>&1等内容,如果需要打印日志,可以追加到指定日志,不推荐留这种不专业的做法

如果定时任务不加>/dev/null 2>&1等命令设置,时间长了,可能会导致邮件临时目录/var/spool/clientmqueue文件数猛增,占用大量磁盘空间inode节点。

5在开发定时任务程序或脚本时,在调试好脚本程序后,应尽量把DEBUG及屏幕输出的内容命令去掉,如果还需要,可定向到日志里。

10. crontab生产解决案例

案例1:No  space  left  on  device故障1

在设置crontab时,提示No  space  left  on device。用df –k检查还有空间,用df –i显示/var已占用100%,如果inode耗尽,则系统上下将不能创建文件。

在/var/spool/clientmqueue/下有超多的文件ls半天没反应,用rm  -fr  *会自动跳出root,然后用xargs来配合解决。cd  /var/spool/clientmqueue&& ls |xargs rm –f

最后清理了该目录的内容。当然,如果文件数超多,执行ls |xargs rm –f也会长时间无反应,此时也可以直接cd /var/spool/&&rm –rf clientmqueue,然后mkdir clientmqueque && chmod 770 clientmqueue &&chown smmsp,smmsp  -R /var/spool/clientmqueue。

原因分析:系统中,cron执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就会产生这些文件。

解决办法:开启邮件服务,并将crontab里面的命令后面加上>/dev/null 2>&1,在做定时脚本时,把屏幕输出定向到日志中。

案例2:No space left on device故障2

(1) when you create a new directory of file,system will say :No space left on device


[[email protected] /var]#mkdir ett

Mkdir:cannot create directory ett’:No space left on device

(2) when create crontab for account ett,you will receive error information as follows;


Crotab:installing new crontab

Cron/tmp.6655:No space left on device

Crontab:edits left in /tmp/crontab.6655


解决过程

1检查分区使用率,df  -h

2检查/var/lock下的文件,删除/var/lock/subsys/nfx,touch /var/ett,成功创建文件,删除/var/ett

3发现删除/var/lock下的任意一个文件后,都可以成功创建一个文件,再创建就会失败。

4将检查扩大到/var/下的其他目录

5怀疑分区/var/de inode用尽导致上述问题,检查inode使用率

6分区/var/没有配置quota

7发现/var/spool/clientmqueue下面有太多的文件,由于系统的邮件服务配置有问题,导致系统发出的邮件堆积在队列目录中,占用大量的inode节点。

处理方法:确认/var/spool/clientmqueue下的文件已经无用,删除之,如果文件数量太大,无法使用rm -f * 直接删除,可以选择ls |xargs rm -f 或者直接删除上级目录,然后重建该目录,并赋予正确的属主和权限。

最好的解决办法是重新设置系统邮件,使其能正常发送或找到发邮件的源头,如本文的crontab任务。

结论:分区/var/的 inode全部用尽,free inode为0,导致无法创建新的文件或目录,以后遇到类似的问题要注意用df  -li检查inode的使用情况。

 

11. 生产场景如何调试crontab定时任务

  1. 在调试时,把任务执行频率调大一点,如:每分钟、每5分钟执行一次;
  2. 用正确的执行任务时间,设置完成后,可以修改下系统当前时间;
  3. 在脚本中加入日志输出,然后把输出打印到指定的日志中,然后观察日志内容,看是否执行正确;
  4. 注意:*/1  *  *  *  *  echo “==” >> /tmp/oldboy.log  >/dev/null  2>&1这种隐蔽的无法正确执行的任务配置;
  5. 执行脚本中>>或者>后的文件名要加上绝对路径。
  6. 注意环境变量导致的定时任务故障,比如运行java程序的时候,环境变量要在脚本中重新export一下。
  1. 通过定时任务日志查看调试定时任务

12. 定时任务生产问题8条箴言

  1. 环境变量问题,典型的是如java程序运行案例
  2. 任务路径问题,脚本要用绝对路径
  3. 脚本权限问题,最好带上/bin/bash,防止忘了为脚本赋予执行的权限带来问题
  4. 时间变量问题,%号在crontab中被认为是newline,需要用\转义,crontab中有“date +%Y%m%d”,必须替换为“date +\%Y\%m\%d”,但写在脚本中就不需要了,这也是老师推荐用脚本文件的原因之一。
  5. >/dev/null 2>&1问题
  6. 定时任务加注释
  7. 使用脚本程序代替命令
  8. 避免不必要的程序输出

13. 定时清理垃圾文件


crontab  -l |tail -2

#del clientmqueue  files  by oldboy at 2010-09-26

00 00  *  *  0 /bin/bash  /server/scripts/del_sys_file.sh > /dev/null  2>&1

cat /server/scripts/del_sys_file.sh

find /var/spool/clientmqueue/  -type  f | xargs  rm  -f

14. crond章节重点

1) 用户使用crontab  -e自定义定时任务项目,分为六段,[分、时、日、月、周、指令]。

2) 系统的/etc/crontab定时任务项目分为7段,[分、时、日、月、周、用户、指令]。

3) crontab定时任务的5个生产基本要领和7点调试技巧,尤其是学会看服务日志来调试

4) 生产环境使用crontab定时任务要注意的8点箴言

5) 重视生产的案例及通过案例为载体来学习巩固技术知识

时间: 2024-10-13 18:05:52

Linux课程笔记 Crond介绍的相关文章

Linux课程笔记 Nginx介绍

1  Nginx介绍 与Apache相比,在性能上,nginx占用更少的系统资源,特定的场景应用(静态数据)能支持更多的并发连接,达到更高的访问效率:在功能上,Nginx是一个优秀的反向代理和负载均衡服务器,也可以作为缓存服务器. 2  Nginx有点总结: 高并发:能支持1-2万甚至更多的并发连接(静态小文件环境下) 内存消耗少:在3万并发连接下,开启的10个Nginx进程消耗不到200M内存 可以做HTTP反向代理,即负载均衡功能,相当于专业的haproxy软件或lvs的功能 内置对RS服务

Linux课程笔记 Day04 课上内容总结

1. Crond介绍 1.0 定时任务比较及cron语法 Linux的任务调度可以分为两类: 系统自身执行的任务 用户执行的工作 Linux系统下另外两种定时任务软件: at:适合仅执行一次的调度任务,需要启动一个名为atd的服务 anacron:这个命令主要用于非7*24小时开机的服务器,anacron并不能指定具体时间执行任务,而是以天为周期或者在系统每次开机后需要执行的任务,它会检测停机期间应该进行,但是并没有进行的crontab任务工作,执行一遍. 这两种比较少用 指令语法: Cront

Linux课程笔记 Apache常用模块的介绍

1. mod_expires模块介绍 1.1 mod_expires介绍 mod_expires允许通过apache配置文件控制HTTP的”Expires:”和”Cache-Control:”头内容,这个模块控制服务器应答时的Expires头内容和Cache-Control头的max-age指令.有效期可以设置为相对于源文件的最后修改时刻或客户端的访问时刻. 这些HTTP头向客户端表明了内容的有效性和持久性.如果客户端本地有缓存,则内容就可以从缓存而不是从服务器读取.然后客户端会检查缓存中的副本

Linux课程笔记 Day01 课程内容总结

系统安装: 引导项简单介绍:在“boot:”提示后: 直接回车(Enter)——图形界面安装模式 linux text——字符界面安装模式 linux askmethod——提示用户选择安装方法(例如:nfs.ftp.http远程安装) linux  rescue——救援模式,如/etc/fstab文件损坏后的修复 memtest86——检测内存 (一)  选择安装方式 输入linux text进入字符安装界面模式,特点是方便.迅速. (二)  是否对光盘进行检查 一般不需要对光盘进行检查,可选

Linux课程笔记 Day02 课程内容总结

一 配置优化Centos5.XLinux系统 1.添加一个普通用户账号 生产环境,一般要避免直接使用root账户操作. 一次性设置密码小技巧:echo “qbf1932” | passwd –stdin  qinbf && history –c 2.  CentOS安装完毕,首先应该修改更新源,并升级到最新系统 国内速度较快的的常用更新源如下: —http://mirrors.sohu.com/ —http://mirrors.163.com/ 法一:将已经编辑好的CentOS-Base.

Linux课程笔记 Day07 课上内容总结 SSH和rsync

一. SSH 1.1    SSH介绍 SSH是Secure Shell Protocol的简称.在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行数据传输.确保了传递的数据安全.SSH是专为远程登录会话和其他网络问题提供安全性的协议. 在默认状态下,SSH协议提供两个服务功能:一个是提供类似telnet远程链接服务器的服务,即上面提到的SSH服务:另一个是类似FTP服务的stp-server,借助SSH协议来传输数据,提供更安全的FTP服务. 特别提醒:SSH客户端

Linux课程笔记 Day03 课程内容总结

1. 软硬链接的介绍和实践 1.1链接的概念 在linux系统中,链接分为硬链接和软链接.在默认不带参数的情况下,执行ln命令创建的是硬链接. 链接是指通过索引节点来进行链接.在linux系统中,多个文件名指向同一个索引节点是正常且允许的,这种是硬链接.硬链接的作用之一是允许一个文件有多个有效路径防止误删除源数据. 文件系统中,只要文件的索引节点还有一个以上的链接,只删除其中一个链接并不影响索引节点和其他的链接(即数据实体并未删除).只有当最后一个链接被删除,此时如果有新数据要存储到硬盘时,被删

Linux课程笔记 Day08 课上内容总结 Apache及Raid技术

一 http基础概念 1.1   静态网页的特点: (1)       静态网页每个页面都有一个固定的URL,而且URL一般以.htm..html..shtml等形式为后缀,而且地址中不含有问号”?” (2)       静态网页是实实在在保存在服务器上的文件,每个都是一个独立的文件 (3)       静态网页的内容相对稳定,容易被搜索引擎收录(优点) (4)       静态网页没有数据库的支持,在网站制作和维护方面工作量较大(缺点) (5)       静态网页的交互性较差,在功能方面有较

Linux课程笔记 用户身份切换命令

超级用户root具有超级管理权限,由于权限太大,如果管理不好,就会对系统安全带来安全隐患.在工作场景中,一般临时性处理工作,都是以普通用户的身份完成,只在必要时才使用超级用户root. 1  su命令 1.1  su介绍 通过su命令可以在用户之间切换,超级用户root向普通用户或虚拟用户切换不需要密码(这就是超极权限所在).其他普通用户之间或者普通用户切换到root,都需要切换用户的秘密验证. su参数选项 注释说明 -,-l,--login 使一个shell成为登陆的shell,如执行su