linux下使用crontab定时执行脚本
使用crontab定时执行脚本
cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:
crontab –e : 修改 crontab 文件,如果文件不存在会自动创建。
crontab –l : 显示 crontab 文件。
crontab -r : 删除 crontab 文件。
crontab -ir : 删除 crontab 文件前提醒用户。
执行以上命令的时候,若遇到“crontab command not found”错误,这是因为软件包没有安装
在crontab文件中写入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
分钟 小时 天 月 星期 要执行的命令
前面五个参数中间用空格隔开,最后是要执行的命令。
合法值为:00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了数字还有几个特殊的符号:"*"、"/"和"-"、","
- *代表所有的取值范围内的数字
- "/"代表每的意思,"/5"表示每5个单位
- "-"代表从某个数字到某个数字
- ","分开几个离散的数字
注:commands 注意以下几点
- 要是存在文件,要写绝对路径
- 即使是打印也不会显示在显示屏,在后台运行,最好重定向日志
实例1:
(写一个定时任务,每分钟往test.txt文件写入一个"good"字符串)
step1:写cron脚本文件,命名为mytest.cron。
使用touch命令创建两个文件,mytest.cron作为脚本文件,test.txt用来测试(作为日志打印输出文件)。


使用vi命令编辑mytest.cron文件。写入以下内容:
*/1 * * * * echo "good" >> /export/Domains/yy.embed.jd.com/server1/logs/test.txt
表示每分钟,执行一次打印命令,往test.txt文件里写入一个


step2:添加定时任务。执行命令
crontab mytest.cron

step3:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

step4:"service crond status"
Crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序
使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,启动命令“service crond start”。

使用cat命令查看test.txt文件,结果:

实例2:
(本人公司测试环境磁盘较小,系统日志打印较多,时间一长,磁盘打满,应用挂掉。针对这种情况,写一个定时任务,定期清理测试环境的系统日志,避免日志打满的情况出现导致应用挂掉。)
主要日志文件如下:

step1:写cron脚本文件,命名为clearLogs.cron。

使用vi命令编辑clearLogs.cron文件。写入以下内容:
50 23 * * * for i in `find /export/Domains/yy.embed.jd.com/server1/logs/ -name "*.log"`; do cat /dev/null >$i; done
50 23 * * * for i in `find /export/Domains/yy.embed.jd.com/server1/logs/ -name "*.out"`; do cat /dev/null >$i; done
50 23 * * * for i in `find /export/Domains/worker.embeddedins.jd.local/server1/logs/ -name "*.log"`; do cat /dev/null >$i; done
50 23 * * * for i in `find /export/Domains/worker.embeddedins.jd.local/server1/logs/ -name "*.out"`; do cat /dev/null >$i; done
表示天的23点50分,执行4个清除命令,分别为清掉/export/Domains/yy.embed.jd.com/server1/logs目录下所有以log结尾的文件内容、清掉/export/Domains/yy.embed.jd.com/server1/logs目录下所有以out结尾的文件内容、清掉/export/Domains/worker.embeddedins.jd.local/server1/logs目录下所有以log结尾的文件内容、清掉/export/Domains/worker.embeddedins.jd.local/server1/logs目录下所有以out结尾的文件内容。

step2:添加定时任务。执行命令
crontab clearLogs.cron
step3:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

以上便可定时清理磁盘日志文件。
实例2里一个文件中使用了多个定时、多个命令,使用crontab执行多个命令时,还有很多其他写法。比如只写一个定时,后面的命令写在一行,命令与命令之间用“;”分号隔开。例如实例2中的每一行命令,其实是3个命令写在一起。把上述12个命令全部写1行也是可以的。
linux下使用crontab定时执行脚本的更多相关文章
- Linux下的crontab定时执行任务命令详解
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为“cr ...
- (二)Linux下的crontab定时执行任务命令详解
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为&qu ...
- Linux下的crontab定时执行任务命令详解(参考:https://www.cnblogs.com/longjshz/p/5779215.html)
在Linux中,周期执行的任务一般由cron这个守护进程来处理[ps -ef | grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行以及调用时间. cron的配置文件成为 ...
- Linux下的crontab定时执行任务详解
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为“cr ...
- Linux下的crontab定时执行任务命令
0x00 简介 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的 ...
- Linux下的crontab定时执行任务简要说明
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为“cr ...
- linux下使用crontab定时备份MYSQL数据库的方法:
摘要 linux下使用crontab定时备份MYSQL数据库的方法: 只需按照下面3步做,一切都在你的掌控之下: 第一步:在服务器上配置备份目录代码: ------------------------ ...
- Linux下的crontab定时、执行任务命令详解 oracle 自动备份
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为&qu ...
- MySQL定时备份之使用Linux下的crontab定时备份实例
这篇文章主要介绍了使用Linux下的crontab进行MySQL定时备份的例子,需要的朋友可以参考下 复制代码代码如下: ##################################### ...
随机推荐
- C++顺序容器知识总结
容器是一种容纳特定类型对象的集合.C++的容器可以分为两类:顺序容器和关联容器.顺序容器的元素排列和元素值大小无关,而是由元素添加到容器中的次序决定的.标准库定义了三种顺序容器的类型:vector.l ...
- 【ASP.NET Core】如何隐藏响应头中的 “Kestrel”
全宇宙人民都知道,ASP.NET Core 应用是不依赖服务器组件的,因此它可以独立运行,一般是使用支持跨平台的 Kestrel 服务器(当然,在 Windows 上还可以考虑用 HttpSys,但要 ...
- 语句in
Python :in在for中: for name in names: names='1','2','3','4','5' for name in names: print(names) in no ...
- spring整合springmvc和hibernate
上篇文章使用maven搭建了web环境,这篇来记录下如何使用spring整合springmvc和hibernate,亦即spring+springmvc+hibernate框架整合. 第一步:首先配置 ...
- (译文)掌握JavaScript基础--理解this关键字的新思路
普通函数 下面这种就是普通函数 function add(x, y) { return x + y; } 每个普通函数被调用的时候,都相当于有一个this参数传进来. 内部函数this不会是外部函数传 ...
- Python 双向链表
操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历链表 add(item) 链表头部添加 append(item) 链表尾部添加 insert(pos, it ...
- Java Client/Server 基础知识
Java的网络类库支持多种Internet协议,包括Telnet, FTP 和HTTP (WWW),与此相对应的Java网络类库的子类库为: Java.net Java.net.ftp Java. ...
- zookeeper提示Unable to read additional data from server sessionid 0x
配置zookeeper集群,一开始配置了两台机器server.1和server.2. 配置参数,在zoo.cfg中指定了整个zookeeper集群的server编号.地址和端口: server.1=1 ...
- a标签传递参数
a标签传递参数 单个参数:参数名称前面跟 ? <a href="localhost:8080/arguments?id=1">单个参数</a> 多个参数 ...
- display属性
display 属性规定元素应该生成的框的类型. 值 描述 none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元 ...