Linux之crond 服务介绍
在介绍crond之前,先科普一下什么是进程?什么是线程?什么是程序?
程序:程序是一组指令及参数的集合,指令按照既定的逻辑控制计算机运行。进程则是运行着的程序,是操作系统执行的基本单位。线程则是为了节省资源而可以在同一个进程中共享资源的一个执行单位。
线程:线程是程序中一个单一的顺序控制流程。进程内有一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。(以上来源于网络解释,具体线程和进程的区别此处不做详解)。简单的说进程就是一个正在运行的程序。
那么,介绍完了上主角crontab吧!
crond是什么?
crond是linux系统中用来定期执行命令或者指定程序任务的一种服务或者软件。(用rpm -qa | grep crontab查看是否安装,如果没有安装就执行 yum install -y crontabs )
一般我们在装完C6/C7系统的时候,crond就会默认存在了。
我们优化开机自启动服务的时候,第一个就是crond。
crond默认情况(每分钟),会检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务。就好比生活中的闹钟一样。但是crond对于秒钟是无能为力的,但是可以用shell脚本来实现。
小插曲:我在输入crontab -l 的时候报no crontab for root 那就写一个任务给它,如下:cd /etc crontab -e 进去的类似vim编辑器一样 输入i 插入 */1 * * * * root /data/bakdb.sh > /data/bak.log 2>&1 然后 esc 冒号: wq 保存,在 输入 crontab -l ,情况如下
可以看到我们编写的定时任务 */1 * * * * root /data/bakdb.sh > /data/bak.log 2>&1,那么我们来介绍一下定时任务书写规范吧。
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
说明:博主是按照时间来记忆的分时日月周,取值范围,是按照正常的生活中日期的时间范围
我们来一起看一下指令选项的含义
参数 | 含义 | 示例 |
-l(list) | 查看crontab文件内容 | crontab -l |
-e (edit) | 编辑crontab文件内容 | crontab -e |
-i | 删除crontab文件内容,删除前会提示确认 | crontab -i |
-r | 删除crontab文件内容 | crontab -r |
-u usr | 执行使用的用户执行任务 | crontab -u |
crontab {-l | -e}实际上就是在操作/var/spool/cron/当前用户这样的文件(pwd 查看的为root,那么就是在操作/var/spool/cron/root)。
既然我们了解了命令的选项含义,前提一定要在这个服务开启的情况下,怎么开启服务呢?
服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //启动服务
查看crontab服务是否已设置为开机启动,执行命令:
ntsysv
加入开机自动启动:
chkconfig –level 35 crond on
loading。。。