linux系统中cron服务详解

要使用 linux cron 服务,你必须安装了 vixie-cron RPM 软件包,而且必须在运行 crond 服务。要判定该软件包是否已安装,使用 rpm -q vixie-cron 命令。要判定该服务是否在运行,使用 /sbin/service crond status 命令。
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

linux cron 的主配置文件是 /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

前四行是用来配置 linux cron 任务运行环境的变量。
SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell);
PATH 变量定义用来执行命令的路径。
MAILTO cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。
HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

/etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。无论使用控制文件中的规定如何,根用户(root)都总是可以使用 cron。

如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。
如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。

另外在/var/spool下面存在着两个目录cron,anacron,其中cron目录下面有每个用户的自己通过crontab -e增加的crontab的内容。anacron目录下面是记录的是cron.daily,cron.monthly,cron.weekly的上一次执行的时间。linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容。

linux cron 基本格式 :
*  *  *  *  *       command
分  时  日  月   周   命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

crontab文件的一些例子:
下面的例子表示每晚的21:30重启apache。 
 

 代码如下 复制代码

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

下面的例子表示每月1、10、22日的4 : 45重启apache。
 
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

下面的例子表示每周六、周日的1 : 10重启apache。
 
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

下面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
 
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

下面的例子表示每星期六的11 : 00 pm重启apache。
 
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

每一小时重启apache
 
* */1 * * * /usr/local/etc/rc.d/lighttpd restart

晚上11点到早上7点之间,每隔一小时重启apache
 
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

每月的4号与每周一到周三的11点重启apache
 
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

一月一号的4点重启apache
 
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :
 
0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
 
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
 
20 0-23/2 * * * echo "haha"

注意 :
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之 后加上 > /dev/null 2>&1 即可

 代码如下 复制代码

#每天早上6点10分
 
10 6 * * * date

#每两个小时
 
0 */2 * * * date
 www.111cn.net

#晚上11点到早上8点之间每两个小时,早上8点
 0 23-7/2,8 * * * date

#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
 
0 11 4 * mon-wed date
 
#1月份日早上4点
 
0 4 1 jan * date

linux cron 命令总结:
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。

crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。

时间: 2024-07-28 14:44:30

linux系统中cron服务详解的相关文章

linux系统中网卡配置详解

文件:/etc/sysconfig/network-scripts/ifcfg-eth0 以下各值常见于所有的基本配置文件中: * DEVICE=name,这里name是物理设备的名字(动态分配的PPP设备应当除外, 它的名字是"逻辑名". * IPADDR=addr, 这里addr是IP地址. * NETMASK=mask, 这里mask是网络掩码. * NETWORK=addr, 这里addr是网络地址. * BROADCAST=addr, 这里addr是广播地址. * GATEW

linux系统中restorecon命令详解

estorecon命令用来恢复SELinux文件属性即恢复文件的安全上下文. 语法 restorecon [-iFnrRv] [-e excludedir ] [-o filename ] [-f filename | pathname...] 选项 -i:忽略不存在的文件. -f:infilename 文件 infilename 中记录要处理的文件. -e:directory 排除目录. -R/-r:递归处理目录. -n:不改变文件标签. -o/outfilename:保存文件列表到 outf

linux系统下hosts文件详解及配置_linux shell

hosts文件 hosts -- the static table lookup for host name(主机名查询静态表). hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下.hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名.在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用dns服务程序来解决.通过可以将常用的域名和ip地址映射加入到hosts文件中

Linux系统Memcache安装配置详解

安装Memcached服务端 memcached依赖于libevent,需要先安装libevent. 安装 libevent # tar zxvf libevent-2.0.21-stable.tar.gz # cd libevent-2.0.21-stable # ./configure --prefix=/usr/local/libevent # make && make install 安装memcached服务端 # wget http://www.memcached.org/fi

Linux系统命令中screen命令详解_Linux

前言 对于执行长时间命令(如大文件运输)而言,为了不让它终止,都会开启一个远程登陆会话窗口来单独运行这样的命令.在此期间,不能关闭远程登录会话窗口或者断开连接,否则前功尽弃.这时候screen命令就派上用场了. Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换.GNU Screen可以看作是窗口管理器的命令行界面版本.它提供了统一的管理多个会话的界面和相应的功能. 下面来介绍下我最常用的screen命令(仅限

Linux系统DNS基本概念详解

域名系统(DNS)用于把网页地址(www.ithov.com)转换成IP地址(65.115.71.34).这一步很重要,因为网页服务器的IP地址被作为传输路径工作于英特网,而并非该网页服务器的名字.这里将说明如何配置DNS服务,以帮助你的网页能被网络浏览 DNS域 每个人都有姓氏和名字或别名.在DNS世界里也一样:一个网页姓氏可以抽象的表示为一个域名.例如:域名ithov.com有它自己的子域www.ithov.comt和mail.ithov.com,分别代表了网页和http://www.ali

linux系统中Cron Job使用方法详解

cron是linux的一个daemon,cron job就是被cron预定执行的任务.cron使用特殊的配置文件即crontab文件来设置命令或脚本的执行时间或频率.之前已经介绍crontab的基础使用,不再详述. 再次说明下crontab的命令格式  # ┌───────────── min (0 - 59)  # │ ┌────────────── hour (0 - 23)  # │ │ ┌─────────────── day of month (1 - 31)  # │ │ │ ┌──

SQL Server 2008中报表服务详解

一.导言 尽管公司经常采集和存储大量的数据,但是有时还是难以详尽地显示数据,而且也很难提供对商业中 将发生什么的洞察以使商业决策者为公司作出相应的和及时的决策. 为了能作出有效的商业决策,公司内从业务经理到信息工作人员的所有层级的用户需要能很容易的访 问到直接提供信息的综合了从企业内多个数据源获得的数据的报表.在大多数公司里,这些报表需要结合 详细的数字和基于文本的报表,这些报表提供了对公司活动的全面的说明和图形化的可视化,它帮助使得 可以更好的查看趋势和进行比较. 报表服务为公司提供了满足各种

Linux系统kernel参数传递方式详解

ARM体系结构: 1.最常用的方式,就是在make config里修改"General Setup"子菜单中的"Default kernel command string" 选项,通过修改这个选项来修改include/linux/autoconf.h文件中的CONFIG_CMDLINE宏 2.有的时候为了省去make menuconfig的时间,并且内核命令也是固定的,就可以写死内核arch/arm/setup.c文件default_command_line,这个变