linux crontab命令简易实践,帮你快速搞定定时任务

一、crond简介

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

/var/spool/cron/为所有用户crontab文件存放的目录,以用户名命名

[root@DG_TZJY ~]# ls /var/spool/cron
oracle  root

二、crontab查看和编辑命令

1.查看定时任务命令:crontab [-u user] [ -l ]
# 查看 oracle 用户下的定时任务(同cat /var/spool/cron/oracle)
[root@DG_TZJY ~]# crontab -u oracle -l
0 6 * * * sh /home/oracle/dgmonitor/adg_check.sh

# 查看 root 用户下的定时任务(同cat /var/spool/cron/root)
[root@DG_TZJY ~]# crontab -u root -l
01 08 * * * /home/oracle/dgmonitor/monitor-dataguard.sh
59 * * * * /home/oracle/delete_arch/delete_arch.sh

44 */2 * * * /bin/bash /etc/titanagent/agent_update.sh >> /var/log/titanagent/check.o.log 2>> /var/log/titanagent/check.e.log
*/2 * * * * /bin/bash /etc/titanagent/agent_update_exception.sh >> /var/log/titanagent/check.o.log 2>> /var/log/titanagent/check.e.log
*/2 * * * * /bin/bash /etc/titanagent/agent_monitor.sh >> /var/log/titanagent/edog.o.log 2>> /var/log/titanagent/edog.e.log

# 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置
# 时间命令格式如下
# 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
2.编辑定时任务命令:crontab [-u user] [ -e ]
# 编辑oracle 用户下的定时任务
[root@DG_TZJY ~]# crontab -u oracle -e

#crontab -e #编辑cron任务模式
#i #默认文字编辑器为vim,按i字母键即可添加cron任务
#ESC #按ESC键退出编辑模式
#:wq #键入:wq保存

举例说明一下定时任务:

        每周定时执行一次        0 0 * * 0
        每月定时执行一次        0 0 1 * *
        每月最后一天定时执行一次    0 0 L * *
        每年定时执行一次        0 0 1 1 *

3.crontab默认调度任务

cron默认配置了调度任务,分别为:hourly、daily、weekly、mouthly,默认配置文件为/etc/anacrontab,将需要执行的脚本放到相应的目录下即可,目录分别为:/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/ect/cron.mouthly

这个方法比较简便,适用于对具体执行时间没有要求的场景。但是可能也有朋友会好奇任务执行的具体时间,我们一起来看下/etc/anacrontab文件

[root@DG_TZJY ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
4.Crontab日志路径

/var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息则linux会每次都发邮件到该用户下。

[root@DG_TZJY ~]# ll /var/log/cron* 
5.crontab在线工具

crontab执行时间计算 - 在线工具

在工具中提交CRON表达式可以计算并展示出接下来7次的执行时间,帮助你判断表达式是否正确。同时也有更为丰富和灵活的非标准表达式等你去探索。

你可能感兴趣的:(Linux运维,linux,运维)