`
aubdiy
  • 浏览: 692905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux计划任务入门详解

阅读更多

 

 Linux计划任务入门详解

 

Cron简介
     cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。

由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
    /sbin/service crond start //启动服务
    /sbin/service crond stop //关闭服务
    /sbin/service crond restart //重启服务
    /sbin/service crond reload //重新载入配置


你也可以将这个服务在系统启动的时候自动启动,在/etc/rc.d/rc.local这个脚本的末尾加上:
    /sbin/service crond start
现在Cron这个服务已经在进程里面了,我们就可以用这个服务了。

 

任务调度的crond常驻命令
     crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。

crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

1.linux任务调度的工作主要分为以下两类:
     *系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
     *个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。

2.直接用crontab命令编辑
  cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
  crontab -l //列出某个用户cron服务的详细内容
  crontab -r //删除没个用户的cron服务
  crontab -e //编辑某个用户的cron服务
  比如说root查看自己的cron设置:crontab -u root -l
  再例如,root想删除fred的cron设置:crontab -u fred -r
  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
  进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

3.cron文件语法:
         分     小时     日      月       星期        命令
       0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)
4.记住几个特殊符号的含义:
       "*"代表取值范围内的数字,
       "/"代表"每",
       "-"代表从某个数字到某个数字,
       ","分开几个离散的数字

 

任务调度设置文件的写法
     可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,

也可以直接修改/etc/crontab文件
具体格式如下:
       Minute Hour Day Month Dayofweek   command
       分钟     小时   天     月       天每星期       命令
每个字段代表的含义如下:
     Minute             每个小时的第几分钟执行该任务
     Hour               每天的第几个小时执行该任务
     Day                 每月的第几天执行该任务
     Month             每年的第几个月执行该任务
     DayOfWeek     每周的第几天执行该任务
     Command       指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。

对于不指定的字段,要用“*”来填补其位置。

举例如下:

5        *      *        *    *    ls    指定每小时的第5分钟执行一次ls命令
30      5       *        *    *    ls    指定每天的 5:30 执行ls命令
30      7       8        *    *    ls    指定每月8号的7:30分执行ls命令
30      5       8        6    *    ls    指定每年的6月8日5:30执行ls命令
30      6       *        *    0    ls    指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30      3       10,20  *    *     ls    每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25      8-11   *       *    *     ls    每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15   *       *       *    *     ls    每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30      6       */10   *    *     ls    每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
50      7       *        *    *     root     run-parts     /etc/cron.daily  每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件
 [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]


1.新增调度任务
   新增调度任务可用两种方法:
     1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
     2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
2.查看调度任务
     crontab -l //列出当前的所有调度任务
     crontab -l -u jp   //列出用户jp的所有调度任务
3.删除任务调度工作
     crontab -r   //删除所有任务调度工作
4.任务调度执行结果的转向
     例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
         30 5 * * * ls >/jp/test 2>&1
     注:2>&1 表示执行结果及错误信息。


编辑/etc/crontab 文件配置cron  
  cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。

     用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:  
  SHELL=/bin/bash  
  PATH=/sbin:/bin:/usr/sbin:/usr/bin  
  MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号  
  HOME=/ //使用者运行的路径,这里是根目录  
  # run-parts  
  01   *   *   *   *     root run-parts /etc/cron.hourly         //每小时执行/etc/cron.hourly内的脚本  
  02   4   *   *   *     root run-parts /etc/cron.daily           //每天执行/etc/cron.daily内的脚本  
  22   4   *   *   0     root run-parts /etc/cron.weekly       //每星期执行/etc/cron.weekly内的脚本  
  42   4   1   *   *     root run-parts /etc/cron.monthly     //每月去执行/etc/cron.monthly内的脚本  
  大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了

 

 

**************注意*********************
脚本在手动执行的情况下,没有问题,但是使用crontab调用的时候,会报环境变量为空,找不到的问题。
原因:这其实是crontab的bug,不会缺省从profile文件中读取环境变量的原因导致的。
解决办法:
 
方法1:手动export
export HADOOP_HOME=/data/application/hadoop
export SQOOP_HOME=/data/application/sqoop
 
方法2:执行一些profile
. /etc/profile(注意点后有个空格)
分享到:
评论

相关推荐

    Linux主要shell命令、sed、awk使用详解

    1 Linux主要shell命令详解 2 Linux bash shell脚本语法入门 3 Shell基本命令 4 使用 sed 编辑器

    嵌入式Linux C编程入门(第2版) PPT

    10.1.1 进程描述符及任务结构 289 10.1.2 进程的调度 291 10.1.3 linux中的线程 293 10.1.4 linux中进程间通信 293 10.2 arm linux进程控制相关api 294 10.3 arm linux进程间通信api 301 10.3.1 ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不...

    Python转运维课程视频.zip

    06_软件管理和计划任务 07_ssh、日志管理和网络管理 08_apache安装和配置 09_apache虚拟主机、防盗链和日志切割 10运维和shell脚本 11shell基础之变量 12shell核心知识表达式 13shell核心知识常见符号和流程控制 14...

    LINUX系统管理白皮书

    对于面向所有主流Linux子系统的支持与管理任务,本书都进行了恰到好处的讲解。涵盖的主题包括文件系统、目录、引导和关机、打印、网络兼容性、网络应用、网络登录、安全、用户账号、数据备份等等。此外,还针对TCP/...

    详解vmvare下安装linux RedHat图解(超详细篇)

    对于linux,我从大二就想学习一下,但一直苦于无从下手,所以一直拖到现在,鉴 于笔者了解很多人在linux入门的困难在何处,所以我认为本套入门基础文章还是挺适合想学习linux的朋友,本系列文章大约十篇文章左右,...

    黑客反汇编揭秘(第二版).part1.rar

    第4章 汇编器入门 46 4.1 汇编语言方法论 47 4.2 基于C程序实例解释汇编概念 48 4.3 汇编插入语句 49 4.4 可用的汇编语言工具 50 4.5 汇编编译器的概况与比较 51 4.5.1 评判的基本标准 52 4.5.2 MASM 54 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和...

    黑客反汇编揭秘(第二版).part2.rar

    第4章 汇编器入门 46 4.1 汇编语言方法论 47 4.2 基于C程序实例解释汇编概念 48 4.3 汇编插入语句 49 4.4 可用的汇编语言工具 50 4.5 汇编编译器的概况与比较 51 4.5.1 评判的基本标准 52 4.5.2 MASM 54 ...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段24讲、线程间通信快速入门,使用wait和notify进行线程间的数据通信.mp4 │ 高并发编程第一阶段25讲、多Produce多Consume之间的通讯导致出现程序假死的原因分析.mp4 │ 高并发编程第一阶段26...

    md格式编写的良心教程 Python 100天从新手到大师 共100个完整源文件 含课程源代码.rar

    异步任务和定时任务.md Day41-55\54.单元测试.md Day41-55\55.项目上线.md Day56-60\56.Flask入门.md Day56-60\57.模板的使用.md Day56-60\58.表单的处理.md Day56-60\59.数据库操作.md Day56-60\60.项目实战.md Day...

    maven window下安装包

    第2章:Maven的安装/2.2 Linux下的安装 第3章:Maven使用入门/3.1 编写POM 第3章:Maven使用入门/3.2 编写源代码 第3章:Maven使用入门/3.3 编写测试代码 第3章:Maven使用入门/3.4 打包 第3章:Maven使用入门/3.5 ...

Global site tag (gtag.js) - Google Analytics