- 浏览: 79793 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
尹超5200:
你TM写点文字能死啊
java图片上传回显(火狐待测) -
shibin_1109:
如果冲突没更新下来的话也可以使用git同步来解决.
Eclips GIT冲突解决
以前一直在用linux的定时,感觉这里没什么东西,只是会用所以也没有深入的研究,头两天有个朋友问我关于crontab的问题,发现自己还不会,所以重新温习了一遍,总结了一下linux的定时
一,时间设定
分 小时 日 月 星期 命令
* * * * * user-name command to be executed
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
例子:
每小时的第三十分钟以developer用户调用一次接口,并输出
每三十分钟执行一次resapi.sh脚本,并把输出的信息全部扔到垃圾箱里去
晚上11点到早上8点之间每两个小时和早上八点
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(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()调用序列会产生怎样的文件共享结构。
一,时间设定
分 小时 日 月 星期 命令
* * * * * 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系统命令
2015-09-08 14:39 561getconf LONG_BIT (Linux查看版本说明当 ... -
linux修改主机名
2014-09-09 23:23 7451,直接执行hostname 主机名,但这么改只对当前用户有效 ... -
在Linux中如何获得某进程对应程序的完整路径
2014-09-01 23:05 833当我们在Linux下用ps aux 看到有如下一个进程时: r ... -
linux vi命令详解
2014-08-29 11:14 578进入vi的命令 vi filename : ... -
文件夹创建软连接
2014-08-20 09:57 1283win7文件夹创建软连接: mklink /j link-fi ... -
linux各版本的比较
2014-08-11 00:06 782目前主流和常用的Linux版本主要有: 1、Redhat 版本 ... -
linux安装mysql
2014-07-30 15:07 5471、安装 查看有没有安装过: yum l ... -
linux tar命令详解
2014-07-30 12:27 624c 创建新的档案文件。 ... -
zookeeper Error contacting service. It is probably not running错误
2014-07-30 10:13 9855公司要用zookeeper,所以昨天在本机装了一个伪集群 ... -
Linux netstat命令详解
2014-07-30 09:56 576常见参数 -a (all)显示所有选项,默认不显示LISTE ... -
linux touch
2014-07-29 17:42 748linux中touch命令参数参数: -a或--time=a ... -
linux下的more命令
2014-04-20 17:03 642名称:more 使用权限:所有使用者 使用方式:more ... -
linux命令netstat
2014-04-19 17:19 679简介 Netstat 命令用于显示各种网络相关信息,如网络连接 ... -
linux系统日志文件名
2014-03-31 23:49 874/var/log/cron 定时日志文件 /var/log/ ... -
shell script的追踪与调试
2014-03-31 23:04 544sh 参数: -n :不执行script,仅查询语法的问题,如 ... -
linux笔记
2014-03-30 03:01 561netstat -tuln 查看主机目前打开的网路服务端口 参 ... -
linux命令ls
2014-03-29 20:25 572参数: -1 每列仅显示一个文件或目录名称。 -a ... -
linux命令管道符"|"和重定向
2014-03-29 14:13 1946管道符 利用Linux所提供的管道符“|”将两 ... -
linux命令grep
2014-03-29 14:03 714grep (global search regular ... -
linux命令locate
2014-03-29 13:32 748locate命令其实是"find -name ...
相关推荐
### Linux Crontab 详解 #### 一、Cron与Crontab简介 在Linux系统中,`cron` 是一个后台服务程序(daemon),用于调度周期性任务。它按照预定的时间间隔执行用户定义的任务,例如运行脚本或执行命令等。`crontab` ...
Linux Crontab 定时任务 命令详解 Linux Crontab 是一个强大的定时任务命令,用于在指定的时间间隔执行特定的命令或程序。Crontab 命令的功能是在一定的时间间隔调度一些命令的执行,通过编写 Crontab 文件来实现。...
它广泛应用于Linux操作系统和Unix系统。 crontab的基本格式如下: ``` *** command to be executed - - - - - | | | | | | | | | +---> Day of week (0 - 6) (Sunday=0) | | | +-----> Month (1 - 12) | | +------...
Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍能记住了,关键是要记住/var/spool/cron这个目录。下面看一下...
Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cron这个目录。...
Linux crontab 命令 Linux crontab是用来定期执行程序的命令。 当安装完成操作系统之后,默认便会启动此任务调度命令。 crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 ...
linux Crontab 用法的详细介绍,
Linux Crontab 使用详解 Crontab 是 Linux 系统中一个非常重要的工具,它允许用户在固定时间或固定间隔执行程序。Crontab 命令的基本格式为:crontab [-u user] [-l|-r|-e],其中 -u user 是指设定指定用户的时程表...
### Linux Crontab命令详解与应用实例 Cron是Linux系统中的一个守护进程,用于调度周期性执行的任务或脚本。Cron通过读取每个用户的crontab文件来确定哪些任务需要被执行,以及何时执行。本文将深入解析Crontab命令...
Linux 系统中的计划任务管理是一个重要的自动化任务执行机制,主要由`cron`服务(也称为`crond`守护进程)来控制。...因此,理解和熟练掌握`cron`服务和`crontab`命令对于Linux系统管理和自动化运维至关重要。
### crontab命令详解 #### 一、引言 `crontab` 是 Linux 和 Unix 系统中用于定时执行任务的重要工具。通过 `crontab`,用户可以在指定的时间间隔内自动执行脚本或者命令,这对于自动化运维、数据备份等场景非常...
#### 二、crontab详解 ##### 2.1 crontab文件的访问权限 在一些共享的系统环境中,通常只有一个crontab文件,而这个文件仅限于管理员访问。因此,普通用户如果想要配置自己的cron任务,可能需要通过管理员的帮助来...
Linux crontab 命令格式详解 Linux 中的 crontab 命令是一种定时任务管理工具,允许用户在固定时间或固定间隔执行程序。crontab 命令的基本格式为:`* * * * * command`,其中每个星号 (`*`) 代表不同的时间单位,...
《Linux命令详解手册》是一份全面的Linux命令参考资料,它详细介绍了Linux系统中广泛使用的一系列命令,覆盖了系统管理、系统设置、文档编辑以及压缩备份等多个方面。为了方便用户查阅,该手册按照命令的功能进行了...
Linux命令之 crontab 用法详解。
【Linux crontab定时触发命令详解】 Linux系统中的crontab命令是一个强大的定时任务调度工具,用于设置周期性被执行的任务。通过crontab,我们可以设定特定时间执行指定的命令或者脚本,以实现自动化维护和管理。...
Linux命令详解手册是一本适合Linux新手和有一定基础的用户深入学习Linux命令的指南。它详细介绍了大量的Linux命令,涵盖了系统管理、系统设置、文档编辑以及压缩备份等多个方面的操作。掌握这些命令对于理解和使用...
crontab 用法详解 crontab 是 UNIX、LINUX 系统中的一个定时执行工具,可以用来执行指定的 shell 命令或脚本。下面详细介绍 crontab 的使用方法和参数。 crontab 的基本用法 crontab 的基本用法包括编辑、显示和...