[linux]解析crontab
linux提供了一个非常强大而且又比较好用的命令 [crontab]
crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,
如果我要linux定时去执行某个脚本或者定时某个http请求,可以用crontab来实现
如下 我用cron去定时发送一个http请求
默认情况下,任何使用者只要不被列入 /etc/cron.deny 当中,那么他就可以直接下达『 crontab -e 』去编辑自己的例行性命令了!整个过程就如同上面提到的,会进入 vi 的编辑画面, 然后以一个工作一行来编辑,编辑完毕之后输入『 :wq 』储存后离开 vi 就可以了!
如果你要每5分钟运行数据同步的脚本,同样可以用crontab -e 然后编辑按照规定的格式写即可.
白天是高峰期,晚上用户不多,是低峰期,我们补数据会占用大量带宽,尤其是白天,会影响正常业务,一般的运维人员在对服务器有大的操作的时候都会实现吧脚本写好,然后设定在凌晨的时候执行指定的脚本就可以了.
crontab的语法
crontab [-u username] [-l|-e|-r]
选项与参数:
-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑
查询目前的定时任务
如果想删除某一个crontab任务,就删除某一行就可以了
/etc/crontab配置文件讲解
我们可以看一看 linux中 /etc/crontab
前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。
crontab的格式讲解
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
上图已经表示很明确了. 每个*代表的意义..
在这里还有一点是需要注意的是几个特殊的符号含义
特殊字符 | 代表含义 |
*(星号) | 代表任何时刻都接受的意思,*代表的是任何时候 |
,(逗号) |
代表分隔字段的意思 例如: 15,30,45 * * * * command 代表的是每月每日每小时的15分,30分,45分的时候执行命令 |
-(减号) |
代表一段时间范围内 例如: 10 7-10 * * * command 代表的是每月每日的7点到10点的10分整时执行命令 |
/n |
那个 n 代表数字,也就是每隔 n 单位间隔的意思 例如 /5 * * * * command 代表的是每月每日每时每个5分钟执行一次 |
crontab的原理
当使用者使用 crontab 这个命令来创建工作排程之后,该项工作就会被纪录到 /var/spool/cron/ 里面去了,而且是以帐号来作为判别的喔!举例来说, css使用 crontab 后, 他的工作会被纪录到 /var/spool/cron/css 中,但请注意,不要使用 vi 直接编辑该文件, 因为可能由于输入语法错误,会导致无法运行 cron 喔!另外, cron 运行的每一项工作都会被纪录到 /var/log/cron 这个登录档中.
crond服务的最低侦测限制是分钟,所以 cron 会每分钟去读取一次 /etc/crontab 与 /var/spool/cron 里面的数据内容 ,因此,只要你编辑完 /etc/crontab 这个文件,并且将他储存之后,那么 cron 的配置就自动的会来运行了,
如果你修改完的crontab或者添加的crontab没有马上的执行起来,那么你可以用 service crond restart 来重启.
看看/etc/下的所有cron的目录
特别注意的是
/etc/cron.deny 该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
最好是对crontab命令进行备份,因为 crontab -e 和crontab -r 中一个是写入 一个是删除,而e和r又相离很近,所以要注意这一点,很容易误删crontab这个文件.
举几个实例吧,这样方便大家能够更加容易的了解
实例 | |
每1分钟执行一次 |
* * * * * command /1 * * * * command |
每小时的第15,30,45分钟执行 | 15,30,45 * * * * command |
7点到10点的第10,50分钟执行 | 10,50 7-10 * * * command |
每隔一天的7点到11点的第20和第40分钟执行 | 20,40 7-11 */1 * * command |
每周一的7点到11点的第25和第50分钟执行 | 25,50 7-11 * * 1 command |
每天的3:30执行 | 30 3 * * * command |
每月1、10、20日的3 : 30执行 | 30 3 1,10,20 * * command |
每周六、周日的3 : 30执行 |
30 3 * * 6,0 command 30 3 * * 6,7 command |
每天9点到16点之间每隔15分钟执行 | /15 9-16 * * * command |
& 后台执行命令
* * * * * command &
当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。
可以把输出接口放到某一个温江中
2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做log.file 的文件中
command
>log.file
2>&1 &
CentOS下查看crontab执行历史记录
在crontab中添加了定时任务,但发现没有得到期望的结果,因而怀疑是crontab没有执行相应的任务,这是我们可以查看一下日志
cd /var/log tail -100 cron
[linux]解析crontab的更多相关文章
- 【转】PHP计划任务:如何使用Linux的Crontab执行PHP脚本
转:https://www.centos.bz/2011/03/auto-run-task-crontab/ 我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是 ...
- 如何让linux定时任务crontab按秒执行
如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...
- Linux shell crontab expdp 定时任务逻辑备份 定时删除旧文件
点击进入:Window bat expdp 定时任务逻辑备份 定时删除N天前的旧文件 创建sh脚本 [oracle@localhost ~]$ vi logicbackup.sh 添加脚本内容 #!/ ...
- 如何使用Linux的Crontab定时执行PHP脚本的方法
我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳 ...
- linux定时任务crontab
今天在执行mysql定时任务语句时候问了很多大拿,都建议我不要随便在生产环境下写定时任务这样的语句,有的说会有延时,那样的话就不准了,有的说在.系统时间和本地时间不一致怎么办?后来就建议我用linux ...
- Linux 命令 - crontab: 任务调度
cron 是一个 Linux 下的定时执行工具,可以在无需人工干预的情况下运行作业.守护进程 cron 会读取 crontab 文件,根据配置在指定的时间执行任务.contab 命令用来添加.删除.显 ...
- linux使用crontab -e 遇到No space left on device
今天用linux的crontab -e编辑定时脚本的时候.遇到No space left on device的错误. 网上找了半天终于知道原因了,昨天晚上我的一个任务因为路径没写对,到时crontab ...
- PHP计划任务:如何使用Linux的Crontab执行PHP脚本
我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳 ...
- linux定时任务crontab的设置
linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...
随机推荐
- C#将结构体和指针互转的方法
. 功能及位置 将数据从托管对象封送到非托管内存块,属于.NET Framework 类库 命名空间:System.Runtime.InteropServices 程序集:mscorlib(在 msc ...
- 图解HTTP第四章
:返回结果的 HTTP 状态码 1>状态码告知从服务器端返回的请求结果 状态码如 200 OK,以 3 位数字和原因短语组成 数字中的第一位指定了响应类别,后两位无分类 2XX 成功常用的状态码 ...
- C#应用NPOI实现导出EXcel表格中插入饼状图(可实现动态数据生成)
一.思路: 1.excel是可以通过NPOI插入图片的: 2.C#通过NPOI生成饼状图: 3.把生成的饼状图以字节流的形式插入到表格 二.看代码: #region 生成饼图图例 /// < ...
- 爸爸在家庭中最应该扮演的角色,是爸爸本爸!zz
不然呢?还是爸爸应该cosplay什么物种?细想下,爸爸这个角色很多人是不称职的,经常加班或完全不管孩子的隐形人.肆意把脾气撒在孩子身上的炸弹君.动不动就不耐烦的刺猬......孩子经常挂在嘴边的不是 ...
- 安装xgboost
http://blog.csdn.net/xizero00/article/details/73008330,python2.7 和python3.5 都可以安装成功.
- 继承Thread类和实现Runnable接口
一.采用继承Thread类方法的特点: 优势:编写简单,如果需要访问当前的线程,只需要使用this,并可以在run()方法中调用其他线程的方法: 劣势:线程已经继承了Thread类,不能继承其他的父类 ...
- JS获取对象数据类型的方法
1.typeof: 语法:typeof 对象 或者 typeof(对象) 返回对象的数据类型:只有原始数据类型:boolean number string undefined function obj ...
- [转载]DevOps在传统企业的落地实践及案例分享
内容来源:2017年6月10日,优维科技高级解决方案架构师黄星玲在“DevOps&SRE 超越传统运维之道”进行<DevOps在传统企业的落地实践及案例分享>演讲分享.IT 大咖说 ...
- 包建强的培训课程(8):iOS与设计模式
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 使用 VSTS 进行 CI 的过程中,无法识别 .NET Core 2.x 的情况处理
大概是由于 .NET Core 2.1 还没有正式发布,使用 VSTS 进行持续集成(CI)的过程中,自动 Build 的环节无法识别 .NET Core 2.1 的框架,查看日志会提示如下错误: V ...