简介
crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
如何使用
- 首先查看帮助
[root@dmp004 orderreport]# crontab -h
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
通过usage可以看到使用格式如下:
crontab [-u user] [ -e | -l | -r ] file
-u后边跟用户名
-e 代表编辑定时任务列表
-l 列出用户定时任务
file为定义定时任务的文件
其他参数一目了然,其中file的格式很重要
minute hour day month week command
文件中共包含六个字段,前五个字段为时间,最后一个字段为要执行的命令。
minute 表示分钟,可以是0-59
hour 表示小时,可以是0-23
day 表示天,可以是1-31
month表示月,可以是1-12
week 表示周几,可以是0-7
command代表要执行的命令,可以是linux命令,也可以是shell脚本
时间字段中:
星号* 代表任何时间
逗号, 比如hour是 “3,4,9” 代表3点、4点、9点都要执行
横杠- 代表范围 比如hour是“3-9”,代表3点至9点都要执行
斜线\/ 代表时间间隔 比如hour是 “0-23/2”,代表在0至23点之间,每两个小时执行一次
常用
1.查看当前用户下的定时任务
[root@dmp004 orderreport]# crontab -l
50 17 * * * /home/mofei/task/orderreport/start.sh
2.查看用户root下的定时任务
[root@dmp004 orderreport]# crontab -u root -l
50 17 * * * /home/mofei/task/orderreport/start.sh
3.给root用户添加定时任务
定义test.task,内容如下:
* * * * * echo 'this is a test'
添加到定时任务列表
[root@dmp004 orderreport]# crontab -u root test.task
[root@dmp004 orderreport]# crontab -u root -l
* * * * * echo 'this is a test'
4.删除root的定时任务
[root@dmp004 orderreport]# crontab -u root -r
特别提示
当给非登录用户(比如:hdfs)添加任务时,最好先切换到hdfs,执行以下任务,避免因权限问题,导致任务未执行的问题
[root@dmp004 orderreport]# su hdfs
[hdfs@dmp004 orderreport]$ ./start.sh
[hdfs@dmp004 orderreport]$ ./start.sh: line 3: /home/mofei/task/orderreport/17-11-07.log: Permission denied
转载于:https://blog.51cto.com/4436396/2051648