Linux 下 Crontab 命令使用详解 定时任务

简介:

一. Crontab 介绍

   crontab命令的功能是在一定的时间间隔调度一些命令的运行。

1.1 /etc/crontab 文件

   在/etc文件夹下有一个crontab文件,这里存放有系统运行的一些调度程序。每一个用户能够建立自己的调度crontab。

  

如:

[root@dave ~]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

run-parts

01 root run-parts /etc/cron.hourly

02 4 * root run-parts /etc/cron.daily

22 4 0 root run-parts /etc/cron.weekly

42 4 1 root run-parts /etc/cron.monthly

1.2 /etc/cron.deny 和 /etc/cron.allow 文件

/etc/cron.deny 表示不能使用crontab 命令的用户

/etc/cron.allow 表示能使用crontab的用户。

假设两个文件同一时候存在,那么/etc/cron.allow 优先。

假设两个文件都不存在,那么唯独超级用户能够安排作业。

每一个用户都会生成一个自己的crontab 文件。这些文件在/var/spool/cron文件夹下:

如:

[root@dave ~]# cd /var/spool/cron

[root@dave cron]# ls

oracle root

我们直接查看这个文件,里面的内容和相应用户显示的crontab -l 一致。

[root@dave cron]# cat oracle

00 6 * /u02/scripts/del_st_archive.sh >/u02/scripts/del_st_arch.log 2>&1

[root@dave cron]# cat root

0 12 * /root/bin/sync-clock.sh

[root@dave cron]#

二. Crontab 使用说明

2.1 Crontab语法

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)
   当中,file是命令文件的名字。假设在命令行中指定了这个文件,那么运行crontab命令,则将这个文件复制到crontabs文件夹下;假设在命令行中沒有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab文件夹下。

帮助:

[root@dave ~]# man crontab

CRONTAB(1) CRONTAB(1)

NAME

   crontab - maintain crontab files for individual users (ISC Cron V4.1)

SYNOPSIS

   crontab [-u user] file

   crontab [-u user] [-l | -r | -e] [-i] [-s]

DESCRIPTION

   Crontab  is the program used to install, deinstall or list the tables used to drive the cron(8) daemon in ISC Cron.  Each user can have their own crontab,  and  though these  are  files in /var/spool/ , they are not intended to be edited directly. For SELinux in mls mode can be even more crontabs  - for  each  range.  For  more  see selinux(8).

   If  the  cron.allow  file  exists,  then  you must be listed therein in order to be allowed to use this command.  If  the  cron.allow  file  does not  exist  but  the cron.deny  file  does  exist,  then you must not be listed in the cron.deny file in order to use this command.  If neither of these files exists, only the  super  user will be allowed to use this command.

OPTIONS

   -u     It  specifies  the name of the user whose crontab is to be tweaked.  If this  option is not given, crontab examines "your" crontab, i.e., the crontab  of the  person  executing the command.  Note that su(8) can confuse crontab and               that if you are running inside of su(8) you should always use the -u  option               for  safety¡¯s sake.  The first form of this command is used to install a new               crontab from some named file or standard input if the pseudo-filename "-" is               given.

   -l     The current crontab will be displayed on standard output.

   -r     The current crontab will be be removed.

   -e     This  option  is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables.  After you exit from the edi-tor, the modified crontab will be installed automatically.

   -i     This  option  modifies the -r option to prompt the user for a ¡¯y/Y¡¯ response before actually removing the crontab.

   -s     It will append the current SELinux security context string as  an  MLS_LEVEL setting  to  the  crontab file before editing / replacement occurs - see the documentation of MLS_LEVEL in crontab(5).

SEE ALSO

   crontab(5), cron(8)

FILES

   /etc/cron.allow

   /etc/cron.deny

STANDARDS

   The crontab command conforms to IEEE Std1003.2-1992 (¡®¡®POSIX¡¯¡¯).  This new  command syntax  differs  from  previous versions of Vixie Cron, as well as from the classic

   SVR3 syntax.

DIAGNOSTICS

   A fairly informative usage message appears if you run it with a bad command line.

AUTHOR

   Paul Vixie <vixie@isc.org>

4th Berkeley Distribution 16 Januar 2007 CRONTAB(1)

2.2 Crontab 格式说明

   我们能够用crontab -e 增加要运行的命令。 命令运行的结果,不管是标准输出还是错误输出,都将以邮件形式发给用户。

  

增加的命令必须以例如以下格式:

          • /command path
    前五个字段能够取整数值,指定何时開始工作,第六个域是字符串,即命令字段,当中包含了crontab调度运行的命令。 各个字段之间用spaces和tabs切割。
    

前5个字段分别表示:

   分钟:0-59

   小时:1-23

   日期:1-31

   月份:1-12

   星期:0-6(0表示周日)

还能够用一些特殊符号:

   *: 表示不论什么时刻

   ,: 表示切割

  -:表示一个段,如第二端里: 1-5,就表示1到5点

   /n : 表示每一个n的单位运行一次,如第二段里,*/1, 就表示每隔1个小时运行一次命令。也能够写成1-23/1.

一些演示例子:

00 8,12,16 * /data/app/scripts/monitor/df.sh

30 2 * /data/app/scripts/hotbackup/hot_database_backup.sh

10 8,12,16 * /data/app/scripts/monitor/check_ind_unusable.sh

10 8,12,16 * /data/app/scripts/monitor/check_maxfilesize.sh

10 8,12,16 * /data/app/scripts/monitor/check_objectsize.sh

43 21 * 21:43 运行

15 05 *    05:15 运行

0 17 * 17:00 运行

0 17 1 每周一的 17:00 运行

0,10 17 0,2,3 每周日,周二,周三的 17:00和 17:10 运行

0-10 17 1 毎月1日从 17:00到7:10 毎隔1分钟 运行

0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 运行

42 4 1     毎月1日的 4:42分 运行

0 21 1-6   周一到周六 21:00 运行

0,10,20,30,40,50  每隔10分 运行

/10 *        每隔10分 运行

  • 1 *         从1:0到1:59 每隔1分钟 运行

0 1 *         1:00 运行

0 /1         毎时0分 每隔1小时 运行

0          毎时0分 每隔1小时 运行

2 8-20/3 *      8:02,11:02,14:02,17:02,20:02 运行

30 5 1,15        1日 和 15日的 5:30 运行

2.3 & 后台运行命令

   当在前台运行某个作业时,终端被该作业占领;而在后台运行作业时,它不会占领终端。能够使用&命令把作业放到后台运行。
   如:

   30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh &
   在后台运行作业时要当心:须要用户交互的命令不要放在后台运行,由于这样你的机器就会在那里傻等。

   只是,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。假设放在后台运行的作业会产生大量的输出,最好使用以下的方法把它的输出重定向到某个文件里:

   如:

          command >out.file 2>&1 &
   在这个样例中,2>&1表示全部的标准输出和错误输出都将被重定向到一个叫做out.file 的文件里。

2.4 2>&1 含义

先看一个样例:

0 2 * /u01/test.sh >/dev/null 2>&1 &

这句话的意思就是在后台运行这条命令,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null 文件,也就是清空。

在这里有有几个数字的意思:

   0表示键盘输入

   1表示标准输出

   2表示错误输出.

我们也能够这样写:

0 2 * /u01/test.sh >/u01/out.file & --这里没写,默认是1

0 2 * /u01/test.sh 1>/u01/out.file &

0 2 * /u01/test.sh 2>/u01/out.file &

0 2 * /u01/test.sh 2>/u01/out.file 2>&1 &

将tesh.sh 命令输出重定向到out.file, 即输出内容不打印到屏幕上,而是输出到out.file文件里。

2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件out.file。

&1 表示的是文件描写叙述1,表示标准输出,假设这里少了&就成了数字1,就表示重定向到文件1。

& :后台运行

測试:

ls 2>1 : 不会报沒有2文件的错误,但会输出一个空的文件1;

ls xxx 2>1: 沒有xxx这个文件的错误输出到了1中;

ls xxx 2>&1: 不会生成1这个文件了,只是错误跑到标准输出了;

ls xxx >out.txt 2>&1 == ls xxx 1>out.txt 2>&1; 由于重定向符号>默认是1,这句就把错误输出和标准输出都传到out.txt 文件里。

2.5 2>&1写在后面的原因

   格式:command > file 2>&1   == command  1> file 2>&1
   首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出,也就是相同被重定向到file中,终于结果就是标准输出和错误都被重定向到file中。

假设改成: command 2>&1 >file

   2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

Blog: http://blog.csdn.net/tianlesoftware

网上资源: http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1 群:62697716(满); DBA2 群:62697977(满)

DBA3 群:62697850 DBA 超级群:63306533;

聊天 群:40132017

--加群须要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

本文转自博客园知识天地的博客,原文链接:Linux 下 Crontab 命令使用详解 定时任务。 如需转载请自行联系原博主。

相关文章
|
15天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
103 6
|
16天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
57 3
|
16天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
48 2
|
11天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
44 3
|
16天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
53 3
|
19天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
55 6
|
20天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
28 7
|
20天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
34 4
|
19天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
19 2
|
20天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
43 3