linux cron
来源:互联网 发布:python最小化 编辑:程序博客网 时间:2024/05/29 17:52
1.cron介绍
cron就是计划任务,通过crond服务定时执行任务。例如:定时运行脚本来监控系统或定时运行某些程序等。
[root@localhost ~]#ps -ef|grep crond
root 2105 1 0 Jul28 ? 00:00:02 crond
root 29117 2105 0 14:57? 00:00:00 crond
root 29123 28816 0 14:57pts/1 00:00:00 grep crond
cron有两个配置文件,一个是一个全局配置文件(/etc/crontab),是针对系统任务的,一组是crontab命令生成的配置文件(/var/spool/cron下的文件),是针对某个用户的。
2.系统任务
2.1系统配置文件
查看/etc/crontab,得到以下信息:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * rootrun-parts /etc/cron.hourly
02 4 * * * rootrun-parts /etc/cron.daily
22 4 * * 0 rootrun-parts /etc/cron.weekly
42 4 1 * * rootrun-parts /etc/cron.monthly
分析一下这个文件:
/* 前四行是用来配置 cron任务运行环境的变量 */
/* 系统要使用哪个 shell 环境*/
SHELL=/bin/bash
/* 定义用来执行命令的路径 */
PATH=/sbin:/bin:/usr/sbin:/usr/bin
/* 任务的输出被邮寄给 MAILTO变量定义的用户名(/var/spool/mail),如果为空,则不邮寄 */
MAILTO=root
/* 设置在执行命令或脚本时使用的主目录*/
HOME=/
/*下面是关键,指定什么时间运行什么目录下的任务,run-parts命令是运行指定目录下的每个脚本 */
# run-parts
/*每天每小时1分钟后运行/etc/cron.hourly目录中的每个脚本文件 */
01 * * * * rootrun-parts /etc/cron.hourly
/*每天凌晨4点2分运行/etc/cron.daily目录中的每个脚本文件 */
02 4 * * * rootrun-parts /etc/cron.daily
/*每个星期天凌晨4点22分运行/etc/cron.weekly目录中的每个脚本文件 */
22 4 * * 0 rootrun-parts /etc/cron.weekly
/*每个月的第一天凌晨4点42分运行/etc/cron.monthly目录中的每个脚本文件 */
42 4 1 * * rootrun-parts /etc/cron.monthly
备注:具体参见后面的cron语法。
注意:如果去掉“run-parts”,后面就可以写要运行的某个脚本名或者命令了。
2.2如何使用
1、直接修改/etc/crontab,直接在里面添加运行的脚本名称
2、不动/etc/crontab,直接将脚本拷贝到相应得目录中(/etc/cron.hourly等)中。
注意:
1)、脚本的执行权限。通过 chmod755 <脚本名> 解决。
2)、注意环境变量的设置,容易出现“commandnot found”,通过添加绝对路径,以及修改Path解决。
环境设置的查询命令为export。
3.用户任务
通过crontab命令创建、删除、编辑自己的用户任务。
每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件(如果该文件已存在,则会覆盖。),此用户的cron信息都记录在这个文件中。
cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。
注意:该文件可以通过vi直接编辑。(已试过)
3.1crontab命令
语法:
crontab [-u user]file
crontab [-u user] [-l| -r | -e][-i]
参数与说明:
crontab -u//设定某个用户的cron服务
crontab -l//列出某个用户cron服务的详细内容
crontab -r//删除没个用户的cron服务
crontab -e//编辑某个用户的cron服务
示例:
/* root查看自己的cron设置 */
crontab -l
/* root想删除fred的cron设置*/
crontab -u fred -r
编辑cron服务时,编辑的内容有一些格式和约定,输入:
crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:
*/1 * * * * ls>> /tmp/ls.txt
备注:具体参见cron语法!
3.2权限安全问题
根 用户以外的用户可以使用 crontab工具来配置 cron 任务。所有用户定义的 crontab 都被保存在 /var/spool/cron目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令,使用由 VISUAL或 EDITOR 环境变量指定的编辑器来编辑该用户的 crontab。该文件使用的格式和 /etc/crontab 相同。当对 crontab所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。
cron 守护进程每分钟都检查/etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。
/etc/cron.allow 和/etc/cron.deny 文件被用来限制对 cron的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。
无论使用控制文件中的规定如何,根用户都总是可以使用cron。
如果 cron.allow文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。
如果 cron.allow文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。
被禁止的用户在使用crontab命令时,会有以下提示:
[naotang@localhostroot]$ crontab -e
You (naotang) are notallowed to use this program (crontab)
See crontab(1) formore information
4.cron语法
一个crontab文件包含多个计划任务,计划任务之间由换行字符分开。每个任务设置 包括6个字段,它们被空格或制表符以以下格式分开:
minute hour day_of_month month weekday command
字段解释:
minute (0-59)
hour (0-23)
day_of_month (1-31)
month (1-12)
weekday (0-6)//0代表星期天
command shell 命令
除了数字还有几个特殊的符号就是“*”、“/”、“-”、“,”
其中 * 代表所有的取值范围内的数字; /代表每的意思,“*/2”表示每2个单位; - 代表从某个数字到某个数字; , 分开几个离散的数字。
示例:
每天早上6点
0 6 * * * echo"Good morning,sir" >> /tmp/test.txt//注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
每两个小时
0 */2 * * * echo"Have a break now." >> /tmp/test.txt
晚上11点到早上8点之间每两个小时,早上八点
023-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 commandline
/* 定时运行SQL语句的例子 */
* ** * * /opt/lampp/bin/mysql -h localhost -u rootDataBaseName < /var/spool/cron/crontabs/ratingRanking.sql
5.cron安装启动
要使用 cron 服务,你必须安装了vixie-cron RPM 软件包,而且必须在运行 crond 服务。要判定该软件包是否已安装,使用 rpm -q vixie-cron命令。要判定该服务是否在运行,使用 /sbin/service crond status 命令。
cron是linux的内置服务,可以用以下的方法启动、关闭这个服务:
/sbin/service crondstart //启动服务
/sbin/service crondstop //关闭服务
/sbin/service crondrestart //重启服务
/sbin/service crondreload //重新载入配置
6.缺点
cron任务的缺点是计划要经常运行,假如我们只是想让特定任务运行一次呢?那么,这时候就要用到at命令,将在另文中介绍。
- linux cron
- linux CRON
- linux cron
- Linux cron
- linux cron
- Linux Cron
- Linux定时软件Cron
- linux 任务计划 cron
- linux定时任务cron
- Cron on Linux
- linux cron学习体系
- Linux CRON Best Practice
- cron linux定时执行
- Cron Job on Linux
- linux add cron job
- cron linux定时使用
- Linux下cron介绍
- Linux下cron服务
- Ubuntu7.10上安装Oracle10g
- LINQ to SQL语句(13)之开放式并发控制和事务
- LINQ to SQL语句(14)之Null语义和DateTime
- 持久化
- tomcat报bind端口错误
- linux cron
- C# Stream 和 byte[] 之间的转换
- linux ifconfig
- tcpdump
- linux mail
- linux iptables
- linux iptables应用
- exchange 2007客户端outlook express邮件和接收邮件的设置
- rpm问题解答