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

linux crontab详解

阅读更多
   以前一直在用linux的定时,感觉这里没什么东西,只是会用所以也没有深入的研究,头两天有个朋友问我关于crontab的问题,发现自己还不会,所以重新温习了一遍,总结了一下linux的定时

一,时间设定
  分     小时    日       月       星期     命令
       *       *     *      *        *      user-name command to be executed
      0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)

     记住几个特殊符号的含义:

         “*”代表取值范围内的数字,
         “/”代表”每”,
         “-”代表从某个数字到某个数字,
         “,”分开几个离散的数字


例子:
每小时的第三十分钟以developer用户调用一次接口,并输出
30 0 * * * developer curl -q  http://localhost:9180/expai_data/readLog > /dev/null 2>>/data/logs/expai_data/error.log

每三十分钟执行一次resapi.sh脚本,并把输出的信息全部扔到垃圾箱里去
*/30 * * * *  developer bash resapi.sh > /dev/null 2>&1

晚上11点到早上8点之间每两个小时和早上八点
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line

每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
00 15 * * 1,3,5 shutdown -r +5

每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。
12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt 


二,输出
linux中crontab定时器里的"2>&1"含义解释:
在crontab定时器中有如下类似的脚本:
0 2 * * * php /data/test/test.php >/dev/null 2>&1 &
其中&1更准确的说应该是文件描述符 1,而数字1一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。
command >out.file 2>&1 &
command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个& , 是让该命令在后台执行。
试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.
你可以用
ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;
ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中;
ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;
ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。
为何2>&1要写在后面?
command > file 2>&1
首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。
command 2>&1 >file
2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。
用strace可以看到:
1. command > file 2>&1
这个命令中实现重定向的关键系统调用序列是:
open(file) == 3
dup2(3,1)
dup2(1,2)
2. command 2>&1 >file
这个命令中实现重定向的关键系统调用序列是:
dup2(1,2)
open(file) == 3
dup2(3,1)
可以考虑一下不同的dup2()调用序列会产生怎样的文件共享结构。
分享到:
评论

相关推荐

    linux crontab 详解

    ### Linux Crontab 详解 #### 一、Cron与Crontab简介 在Linux系统中,`cron` 是一个后台服务程序(daemon),用于调度周期性任务。它按照预定的时间间隔执行用户定义的任务,例如运行脚本或执行命令等。`crontab` ...

    Linux Crontab 定时任务 命令详解

    Linux Crontab 定时任务 命令详解 Linux Crontab 是一个强大的定时任务命令,用于在指定的时间间隔执行特定的命令或程序。Crontab 命令的功能是在一定的时间间隔调度一些命令的执行,通过编写 Crontab 文件来实现。...

    crontab详解

    它广泛应用于Linux操作系统和Unix系统。 crontab的基本格式如下: ``` *** command to be executed - - - - - | | | | | | | | | +---> Day of week (0 - 6) (Sunday=0) | | | +-----> Month (1 - 12) | | +------...

    Linux定时任务Crontab详解

    Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍能记住了,关键是要记住/var/spool/cron这个目录。下面看一下...

    Linux定时任务Crontab详解(推荐)

    Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cron这个目录。...

    Linux crontab 命令用法详解

    Linux crontab 命令 Linux crontab是用来定期执行程序的命令。 当安装完成操作系统之后,默认便会启动此任务调度命令。 crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 ...

    Crontab 用法详解.TXT

    linux Crontab 用法的详细介绍,

    Linux——Crontab使用详解.docx

    Linux Crontab 使用详解 Crontab 是 Linux 系统中一个非常重要的工具,它允许用户在固定时间或固定间隔执行程序。Crontab 命令的基本格式为:crontab [-u user] [-l|-r|-e],其中 -u user 是指设定指定用户的时程表...

    Linux crontab 命令格式与详细例子

    ### Linux Crontab命令详解与应用实例 Cron是Linux系统中的一个守护进程,用于调度周期性执行的任务或脚本。Cron通过读取每个用户的crontab文件来确定哪些任务需要被执行,以及何时执行。本文将深入解析Crontab命令...

    crontab详解.docx

    Linux 系统中的计划任务管理是一个重要的自动化任务执行机制,主要由`cron`服务(也称为`crond`守护进程)来控制。...因此,理解和熟练掌握`cron`服务和`crontab`命令对于Linux系统管理和自动化运维至关重要。

    crontab命令详解

    ### crontab命令详解 #### 一、引言 `crontab` 是 Linux 和 Unix 系统中用于定时执行任务的重要工具。通过 `crontab`,用户可以在指定的时间间隔内自动执行脚本或者命令,这对于自动化运维、数据备份等场景非常...

    cron和crontab概念详解

    #### 二、crontab详解 ##### 2.1 crontab文件的访问权限 在一些共享的系统环境中,通常只有一个crontab文件,而这个文件仅限于管理员访问。因此,普通用户如果想要配置自己的cron任务,可能需要通过管理员的帮助来...

    Linux crontab 命令格式.docx

    Linux crontab 命令格式详解 Linux 中的 crontab 命令是一种定时任务管理工具,允许用户在固定时间或固定间隔执行程序。crontab 命令的基本格式为:`* * * * * command`,其中每个星号 (`*`) 代表不同的时间单位,...

    linux命令详解阿手册PDF文档

    《Linux命令详解手册》是一份全面的Linux命令参考资料,它详细介绍了Linux系统中广泛使用的一系列命令,覆盖了系统管理、系统设置、文档编辑以及压缩备份等多个方面。为了方便用户查阅,该手册按照命令的功能进行了...

    crontab用法详解

    Linux命令之 crontab 用法详解。

    linux crontab定时触发命令.docx

    【Linux crontab定时触发命令详解】 Linux系统中的crontab命令是一个强大的定时任务调度工具,用于设置周期性被执行的任务。通过crontab,我们可以设定特定时间执行指定的命令或者脚本,以实现自动化维护和管理。...

    Linux命令详解手册

    Linux命令详解手册是一本适合Linux新手和有一定基础的用户深入学习Linux命令的指南。它详细介绍了大量的Linux命令,涵盖了系统管理、系统设置、文档编辑以及压缩备份等多个方面的操作。掌握这些命令对于理解和使用...

    crontab用法详解。

    crontab 用法详解 crontab 是 UNIX、LINUX 系统中的一个定时执行工具,可以用来执行指定的 shell 命令或脚本。下面详细介绍 crontab 的使用方法和参数。 crontab 的基本用法 crontab 的基本用法包括编辑、显示和...

Global site tag (gtag.js) - Google Analytics