Linux下使用Crontab定时执行脚本及多种案例
- 一、安装与基本语法
- 1、安装
- 2、语法
- 3、时间
- 二、案例
- 1、定时输出任务
- 2、定时清空日志
一、安装与基本语法
1、安装
yum -y install vixie-cron
yum install crontabs
2、语法
crontab -e #: 修改 crontab 文件,如果文件不存在会自动创建。
crontab -l #: 显示 crontab 文件。
crontab -r #: 删除 crontab 文件。
crontab -ir #: 删除 crontab 文件前提醒用户。
cat /etc/crontab #:查看crontab文件
3、时间
在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"字符串
mkdir /home/mycorn
touch /home/mycorn/mytest.txt
vim /etc/crontab
#命令如下
*/1 * * * * echo "good" >> /home/mycorn/mytest.txt
#开启定时任务
crontab /etc/crontab
2、定时清空日志
表示每四秒执行一个往mytest.log中填写一个“good”,然后每五秒通过for循环mycorn文件夹下以log为后缀的日志清除一遍日志(同一行的语句以;隔开)
*/4 * * * * echo "good" >> /home/mycorn/mytest.log
*/5 * * * * for i in `find /home/mycorn/ -name "*.log"`; do cat /dev/null > $i; done
实例2里一个文件中使用了多个定时、多个命令,使用crontab执行多个命令时,还有很多其他写法。比如只写一个定时,后面的命令写在一行,命令与命令之间用“;”分号隔开。例如实例2中的每一行命令,其实是3个命令写在一起。把上述12个命令全部写1行也是可以的。