红联Linux门户
Linux帮助

RHEL6服务器时间任务浅谈

发布时间:2015-05-16 21:37:58来源:linux网站作者:linux人

脚本服务管理
/etc/init.d/和/etc/rc.d/init.d 目录下存放的都是服务启动脚本

[root@rootbug ~]# vim /etc/init.d/httpd
#/bin/bash
--定义由bash去解析的脚本
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.


对于一个服务脚本,一般都有下面两行注释
# chkconfig: - 85 15
- 没有数字只有一杆表示此服务开机没有启动,利用chkconfig --list |grephttpd得到结果全部都是off,如果有数字,比如2345,表示在/etc/rc2.d/---到/etc/rc5.d/里面的数据标识为开机启动,启动顺序看下一个数字,即85;那么在/etc/rc1.d/和/etc/rc1.d/里面的数据标识为关闭服务,关闭顺序是之后一个数字,即15.
85 代表开机时启动的顺序号为85
15 代表关机时关闭服务的顺序号为15


图形配置服务开机自动启动或者关闭
命令描述ntsysv - simple interface for configuring runlevels

ntsysv
通过ntsysv 进行配置非常方便进行开启或者关闭服务器需要的服务


时间脚本任务
一般时间任务有:at(batch),atd,crond,anacron
/etc/init.d/atd
/etc/init.d/crond
/etc/init.d/anacron

at
-l 查看时间job 相当于atq
-d 删除时间job 相当于atrm
-c 显示时间job的内容
-f 后接一个脚本
脚本执行
[root@rootbug ~]# vim 1.sh
#!/bin/bash
echo "12345" > /dev/pts/2

[root@rootbug ~]# at 10:07 031711 -f 1.sh
job 8 at 2011-03-17 10:07


直接利用at执行
[root@rootbug ~]# at 09:47 031711
at> echo "hello" > /dev/pts/2
at>  --ctrl+d结束
job 2 at 2011-03-17 09:47

还有类似下面的时间推移的写法
[root@li ~]# at now + 10 minutes
[root@li ~]# at now + 1 hours
[root@li ~]# at now + 1 days
[root@li ~]# at now + 1 weeks
[root@li ~]# at now + 1 months
[root@li ~]# at now + 1 years

***如果想配置拒绝某些用户使用at命令该如何限制?
at任务的使用限制:
/etc/at.allow --在这里可以写上允许执行at的普通用户(格式方面也要注意,不要乱空格),一个用户一行;存在的话就不用去考虑at.deny
/etc/at.deny --在这里可以定上拒绝执行at的普通用户,一个用户一行;如果at.allow不存在,才生效


crontab特点:
1,能够周期性的运行
2,时间过了就不执行,等下一个周期再执行 (或者使用anacron补足执行)

主配置文件
vim /etc/crontab
执行周期时间 执行身份 命令行 目录
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
时间格式
分 时 日 月周
01* * * *

分钟: 0-59
小时: 0-23
日: 1-31 看月份定
月: 1-12
周 0-7 0和7都是代表星期天

时间格式的几种特殊符号写法
* 代表每分钟,每小时,每日,每星期,每月..........
, 代表分隔时间 1,5,6,7
- 代表一个时间范围  7-20
/n 代表每隔n个单位   */3 --不能写成/3,而要写成*/3


例子1;
vim /etc/crontab

* * * * * root echo 'crontab'>/dev/pts/2 --每分钟都会去echo一个crontab到/dev/pts/2终端
例子2;
vim /etc/crontab
* * * * * root run-parts/etc/cron.minutely --做一个每分钟都会执行的目录,把每分钟都要执行的脚本任务放到这个目录里,注意要有执行权限 
***************注意:***************************
--修改了/etc/crontab的配置后,不需要重启crond服务,但要保证是开启状态
--写到主配置文件里的要写执行身份,如果后面接的是目录,则要加上run-parts,并且目录内的脚本为可执行
*****************


还可以直接crontab命令进行添加时间任务
crontab
-e --编辑自己的时间任务
-l --列出自己的时间任务
-r --删除时间任务
-i --删除前要求确认
[root@li ~]# crontab -e
30 18 * * * /sbin/init 0 --写上每晚6点30分钟自动关机    注意要关机命令root用户写才有效

********如果想拒绝普通用户使用crontab命令该如何限制?
crontab的使用限制:
/etc/cron.allow --写上允许使用crontab的普通用户名,一行写一个;有些文件的话就不考虑/etc/cron.deny
/etc/cron.deny  --写上拒绝使用crontab的普通用户名,一行写一个;如果/cron.allow不存在,才生效


anacron
anacron服务将和crond配合使用,保证crond没有执行的任务可以延后执行。

主配置文件
vim /etc/anacrontab

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

天数 延后时间(分钟) 自定义的名字 执行命令串 目录

1 5 cron.daily run-parts /etc/cron.daily -----目录内的脚本在1天内没有被执行过,那么就推后5分钟执行,执行完成后,就把时间给记录到/var/spool/anacron/cron.daily文件里。

7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly


Linux系统下的定时任务Crontab:http://www.linuxdiyf.com/linux/8249.html

约会、会议、备忘、任务:Ubuntu里的日程管理:http://www.linuxdiyf.com/linux/11694.html

Linux设置任务计划:http://www.linuxdiyf.com/linux/10918.html

Linux系统入门学习:在Linux中加入cron任务:http://www.linuxdiyf.com/linux/8647.html

Linux任务调度crontab时间规则介绍:http://www.linuxdiyf.com/linux/4596.html