Linux定时任务(1)— crontab

2018-12-14  本文已影响13人  枫林风雨

执行定时任务

crontab简介

Linux 系统有个 crond 程序,对应 cron 这个守护进程[ps -ef |grep cron]。它在系统中会每分钟扫描定时任务,读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“cron table”的简写。crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。

每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的

crontab -u username -e    #创建定时任务, 

-u #后面跟创建此任务的用户名
-e #是进入编辑任务
-r #删除定时任务
-l #查看定时任务

1、crontab服务控制
service crond start    //启动服务
service crond stop     //关闭服务
service crond restart  //重启服务
service crond reload   //重新载入配置
service crond status   //查看服务状态
2、查看 crontab 定时任务配置文件
  1. /var/spool/cron/
  1. /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root 
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

内容说明
minute (0-59) hour (0-23) day (1-31) month (1-12) OR jan,feb,mar,apr ... day of week (0-6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
*/15(每15分钟) 6(每天6点) 10,20(每月10号及20号) 8(每年的8月) 0 (每个星期天)
每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
5 * * * * ls  #指定每小时的第5分钟执行一次ls命令     
30 5 * * * ls  # 指定每天的 5:30 执行ls命令     
30 7 8 * * ls  #指定每月8号的7:30分执行ls命令    
30 5 8 6 * ls  #指定每年的6月8日5:30执行ls命令    
30 6 * * 0 ls  # 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,
30 3 10,20 * * ls  #每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls  #每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls  #每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令]
30 6 */10 * * ls  # 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。                  
50 7 * * * root  #每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件。
3、创建一个定期命令

第一种:crontab -u username -e 系统自动打开vi编辑器,输入需要执行的定时任务。如果出现如下提示:crontab: must be privileged to use -u ,请使用 sudo 执行。示例如下:

`* */2 * * * root rm /var/log/test/* `

第二种:用编辑文件的方式来创建定期命令,在/etc/cron.d/filename 下创建一个文件,vi 打开编辑文件的位置: /etc/cron.d/filename 。/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

4、查看任务、删除任务
crontab -l  #查看任务
crontab -u root -r  #删除任务
5、定时任务创建权限的设定

方式:编辑文件

/etc/crond.deny   #编辑cron 创建定期任务的黑名单
/etc/crond.allow   #编辑cron 创建定期任务的白名单

系统默认没有白名单,可以自己创建,注意,创建后,只有白名单上的用户才又权限创建任务。

6、创建cron脚本

第一步:写cron脚本文件,命名为crontest.cron,内容如下:

15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 

表示,每隔15分钟,执行打印一次命令
第二步:添加定时任务。执行命令 “crontab crontest.cron”,搞定 。
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
注意:这操作是直接替换该用户下的crontab,而不是新增

上一篇 下一篇

猜你喜欢

热点阅读