您的位置:首页 > 运维架构 > Linux

Linux中crond服务与crontab用法

2010-08-09 17:39 351 查看
今天需要写个定时更新系统的脚本,man crondtab 不甚详细,现将网络上的介绍列举如下:

来源http://weiqiang-yang.javaeye.com/blog/498393

http://topic.csdn.net/t/20030517/15/1797151.html

http://www.drupaling.cn/a/Linux/shiyongjiqiao/2009/0911/353.html

============================================================================

crontab

是一个很方便的在unix/linux

系统上定时(循环)执行某个任务的程序使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,cron服务是一个定时执行的服务,可以通过crontab

命令添加或者编辑需要定时执行的任务:

crontab

-u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab

-l //列出某个用户cron服务的详细内容

crontab

-r //删除没个用户的cron服务

crontab

-e //编辑某个用户的cron服务

比如说root查看自己的cron设置:crontab

-u root -l

再例如,root想删除fred的cron设置:crontab

-u fred -r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab

-u root -e

进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

编辑/etc/crontab

文件,在末尾加上一行: 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。

需要将crond设置为系统启动后自动启动的服务,可以在/etc/rc.d/rc.local 中,在末尾加上

service crond start

如果还需要在系统启动十加载其他服务,可以继续加上其他服务的启动命令。

比如: service mysqld start

基本用法:

1. crontab

-l

列出当前的crontab

任务

2. crontab

-d

删除当前的crontab

任务

3. crontab

-e (solaris5.8上面是 crontab

-r)

编辑一个crontab

任务,ctrl_D结束

4. crontab

filename

以filename做为crontab

的任务列表文件并载入

crontab

file的格式:

crontab

文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间

分钟 (0-59)

小时 (0-23)

日期 (1-31)

月份 (1-12)

星期几(0-6,其中 0 代表星期日)

第 6 个字段是一个要在适当时间执行的字符串

例子:

#MIN HOUR DAY MONTH DAYOFWEEK COMMAND

#每天早上6点10分

10 6 * * * date

#每两个小时

0 */2 * * * date (solaris 5.8似乎不支持此种写法)

#晚上11点到早上8点之间每两个小时,早上8点

0 23-7/2,8 * * * date

#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * mon-wed date

#1月份日早上4点

0 4 1 jan * date

补充:在使用crontab

的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export)

(1)先建一个文件crond.txt如下, 每天早上5点36分重新启动

36 5 * * * reboot

(2)上传到/opt目录

(3)运行命令

crontab

/opt/crond.txt

crontab

-l

让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后。也要重新启动cron服务器。

在Fedora 和Redhat中,我们应该用;

[root@localhost ~]# /etc/init.d/crond restart

如果让crond 在开机时运行,应该改变其运行级别;

[root@localhost ~]# chkconfig --levels 35 crond on

service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它, cron服务是一个定时执行的服务,可以通过crontab

命令添加或者编辑需要定时执行的任务

====================================================

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux
的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

你也可以将这个服务在系统启动的时候自动启动:

在/etc/rc.d/rc.local这个脚本的末尾加上:

/sbin/service crond start

=================================================

参考了以上达人的资料后,为验证我的理解,写了个测试程序,过程如下,仅供参考:

Platform:EL3 User:eric

1) 建一shell run.sh内容如下

echo "OK,crontab"

date >> ~/crontab_test.txt

exit 0

2) crontab -e

输入*/1 * * * * ~/run.sh

ok, 每分钟shell都会提示收到一封信邮件

cat /var/spool/mail/eric | less会看到执行的信息

如果制止系统发邮件,可在第二步改为*/1 * * * * ~/run.sh > /dev/null

cat crontab_test.txt



K.O
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: