zoukankan      html  css  js  c++  java
  • crontab小结

    crontab是linux下的计划任务,可以用来定时或者按计划运行命令。

    创建计划任务:

    1.使用crontab -e命令,直接创建计划任务

    2.使用编辑器编写好计划任务的文件后,再使用crontab [plan-file],注册计划任务文件。这方法不好的地方在于,每次编辑完计划任务的文件后,都得记得注册一次,否则还是旧的计划任务。

    crontab的语法如下:

    *     *     *     *     *  command to be executed
    -     -     -     -     -
    |     |     |     |     |
    |     |     |     |     +----- day of week (0 - 6) (Sunday=0)
    |     |     |     +------- month (1 - 12)
    |     |     +--------- day of month (1 - 31)
    |     +----------- hour (0 - 23)
    +------------- min (0 - 59)

    例子:

    * * * * * <command> #Runs every minute
    30 * * * * <command> #Runs at 30 minutes past the hour
    45 6 * * * <command> #Runs at 6:45 am every day
    45 18 * * * <command> #Runs at 6:45 pm every day
    00 1 * * 0 <command> #Runs at 1:00 am every Sunday
    00 1 * * 7 <command> #Runs at 1:00 am every Sunday
    00 1 * * Sun <command> #Runs at 1:00 am every Sunday
    30 8 1 * * <command> #Runs at 8:30 am on the first day of every month
    00 0-23/2 02 07 * <command> #Runs every other hour on the 2nd of July
    * */1 * * *
    <command> #每一小时
    * 23-7/1 * * *<command> #晚上11点到早上7点之间,每隔一小时

    查看计划任务:

    crontab -l

    查看输出:

    crontab默认会将<command>的结果输出到Linux用户的邮箱(mailbox),在redhat enterprise版本中,mailbox在/var/spool/mail/<user>这里。

    每次来这里查看其实不太方便,所以可以让crontab直接输出到某个指定的地方:

    */10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2>&1

    这里的1和2,值得是将STDERR这个输出(standard errors, 用2表示),一并存到STDOUT这个输出里(standard output, 用1表示)

    以某用户运行计划任务:

    crontab -u <user> -e

    这样的计划任务,是为某个特定的用户而创建的。否则的话,就算调用Java,也得在命令行里写一堆东西:

    export JAVA_HOME=/usr/java/jdk1.6.0_45
    export PROJECT_HOME=/home/derek/clientreporting
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/td.jar:.

     补充:

    利用linux的命令,可以根据不同的日子输出crontab的运行结果,而不需要每次都查mailbox(/var/spool/mail/<user>):

    30 12 * * * /some/script/to/run.sh > /some/log/name-$(date +"\%F").log

    注意,date和+之间有一个空格!!!否则此命令无法输出日期。详细的日期格式可以看这里

    参考

  • 相关阅读:
    写在博客前面
    JavaAPI学习(一):API && String类 && Stringbuffer && StringBuilder
    Java面向对象(七):Object类 & 内部类 & 单例模式
    Java面向对象(六):抽象方法 & 接口 & 递归
    Java面向对象(五):OOP三大特性之多态 — final 关键字
    Java面向对象(四):OOP三大特性之封装与继承
    Java面向对象(三):Java权限修饰符—static关键字
    Java面向对象(二):成员变量—OOP中的内存管理—构造函数
    Java面向对象(一):方法—初识面向对象
    JavaSE学习(六):随机数—简单的排序算法
  • 原文地址:https://www.cnblogs.com/techyc/p/3591872.html
Copyright © 2011-2022 走看看