L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解

程序概念:

简单的说:我们使用的命令就是程序,比如qq,听歌MP3,MP4,linux系统也是程序。

基本特征:可能是一堆代码,一个文件,一个命令。程序是静态的,放在电脑里没有被运行。

位置:磁盘里。

进程概念:

简单的说:就是把系统中程序给运行起来就是进程。

位置:内存中。

所谓进程(Processec)就是指现在系统正在执行的程序,每当输入一个命令时,shell也会同时启动一个命令。

每个进程启动时,系统会指定一个唯一的数字给每个进程,这个数字称为进程(ID)或者PID或者进程号。再关闭进程的时候可以指定PID关掉。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第1张图片

每个进程都可能以两种方式存在:前台和后台。

一般的系统服务都是以后台方式存在,且都会常驻在系统中,直到关机或者主动杀死时才结束,例如远程连接sshd,我们常称之为守护进程。(如下两个图。)

通过命令查看sshd状态,可以看到正在运行...的显示。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第2张图片

可以通过命令netstat -lntup|grep ssh来查看网络端口。

前面讲的内容:linux目录结构,文件属性,文件类型,权限,命令等都不是进程。

下面讲的是第一个带有进程或者守护进程的服务,crond定时任务服务(守护进程)。

1.crond是什么?
crond是linux系统中定期执行命令和指定程序任务的一种服务或者软件。

一般在我们安装完c5/c6系统的时候,crond就会默认存在了。

我们在优化开机自启动服务的时候,第一个就是crond。

crond服务默认情况(每分钟),会检查系统中是否有需要执行的任务,如果有,就会根据事先定义好的规则来执行这个定时任务。

做个比喻:crond的定时任务就相当于我们生活中闹钟一样。

crond服务==闹钟 来学习,一般都应该会。

秒级任务:

1)crond无能为力。

2)自己写守护进程shell循环。

例子:

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第3张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第4张图片

每秒钟都会打一下。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第5张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第6张图片

想要在后台执行的话,就要把这个追加到文件中。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第7张图片

可以使用kill命令杀掉进程。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第8张图片

主要讲crond:

2.为什么需要定时任务?

服务器:7*24小时开机提供服务是网站的基本特征。

有重要数据:一天备一次,五次以上。

服务器上的数据一般最低一天一次,可能还要每分钟(实时备份)再增量备份一次。

时间:半夜一点备份,然后睡觉。假设一次备份持续五个小时,正是这样一个情况,定时任务就产生了。定时任务可以帮助我们自动备份数据。

linux的定时任务分类:

1.系统自身的定期执行的任务。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第9张图片

系统自动轮询的两个文件:

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第10张图片

上上图中的messages和secure为什么会被轮询,这就是由系统管理的。

2)用户执行的定时任务。

这就是用户手动添加的,

linux的定时任务分类:

1)at适合执行一次就结束的调度任务。突发性任务,每天晚上。几乎不用。作为了解。(绿叶)

2)ancron适合于非7*24小时开机的服务器准备的。开机执行的,检测停机期间没有执行的任务,再开机后一次性执行一遍。(绿叶)

3)crond:crond服务默认情况(每分钟),会检查系统中是否有需要执行的任务,如果有,就会根据事先定义好的规则来执行这个定时任务。(红花)

crond依赖的服务:crond。

提示:我们说的crond是一个定时任务的守护进程,而crontab是用户用来设置定时任务规则的命令。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第11张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第12张图片

最常用的是:-l,-e。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第13张图片

其中的crontab -e编辑的文件是:/var/spool/cron/root中。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第14张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第15张图片

系统的定时任务。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第16张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第17张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第18张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第19张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第20张图片

例子:

1)30 3,12 * * * /bin/sh /scripts/oldboy.sh:每天凌晨三点和十二点的半点时刻,执行脚本。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第21张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第22张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第23张图片

4.3生产环境crontab专业实例:

例1:每分钟打印一次自己的名字拼音全拼到“/server/log/自己的名字命名的文件”中。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第24张图片

watch ls server/log/hsp.txt:每隔两秒自动看这个目录或者文件有没有生成东西,/server/log必须要存在才能出结果。想要关闭进程,以下两种方法:

1)使用kill命令杀死进程。

2)进入crontab -e,在对应进程前加#。

关于脚本:只要把命令在文件中堆叠,就是一个脚本。一般用sh a.sh(文件名)查看脚本的生成内容。

1)创建目录/server/scripts和编写oldboy.sh脚本:

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第25张图片

不用sh(或者/bin/sh)开头引导的话,会提示权限不够。

2)书写定时任务:

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第26张图片

也可以输入crontab -e然后放入以下内容保存:

<==脚本最好是复制命令执行过的或者把定时任务的脚本再复制到命令执行一遍。

提示:

1)调试方法:可以先改成每分钟(当然要确定脚本对系统没有影响)。

2)/bin/sh oldboy.sh这样写是错的,这样的话会找家目录下的/root/oldboy.sh,肯定找不到。所以尽量用绝对路径。

3)标准规范答案:

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第27张图片

按照专业来讲,结尾要加黄色部分的东西(把标准错误和标准输出都定位到/dev/null,作用:不会让脚本在屏幕上打印别的东西,不会产生垃圾。如果不加:会把某个队列(下节课演示为什么要加这个东西)打满)。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第28张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第29张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第30张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第31张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第32张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第33张图片

还等价于&>dev/null。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第34张图片

红色圈住的部分是等价的。不管结果正确还是错误都放在a.log里边。

给定时任务看病的日志:/var/log/cron。

例题:

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第35张图片

1)B

2)A

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第36张图片

1)

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第37张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第38张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第39张图片

不加/的话,默认指向的是运行定时任务的用户所在的家目录/。在执行任务的时候,尽量把命令放到脚本中执行,防止出错。

2)

包袱:/etc/service是不存在的,应该是/etc/services。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第40张图片

技巧:

1)进入打包文件或者目录的上级目录进行打包。

2)如果定时任务是按小时,打包里的日期也要精确到小时。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第41张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第42张图片

改错:tar zcvf /tmp/services----

第一次vim输入命令,调整命令。

第二次进入vim,去掉v,不要让有太多的输出,

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第43张图片

技巧:

1)规范脚本存放的目录。

2)定时任务打包或者处理其他工作,最好不要在屏幕输出,如果想看,可以打到日志文件里。

3)从命令行到脚本的过程尽量复制,不要手敲。防止出错。

测试的时候尽量用/bin/sh /server/scripts/tar.sh。不用sh /server/scripts/tar.sh,后者是不规范的。

技巧:

1)命令行测试好,要用定时任务使用的完整命令测试。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第44张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第45张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第46张图片

操作完进行检查。如上图。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第47张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第48张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第49张图片

(3)

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第50张图片

错误纠正:tar zcvf /data/html----。 

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第51张图片

进入history,可以按住alt键竖选。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第52张图片

注意第一次vim与第二次vim的区别。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第53张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第54张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第55张图片

1)系统内核优化的文件。优化的实质是在改proc里边的文件。

2)防止开机自启动命令或者脚本的文件。

3)服务器本地域名解析的文件。

4)开机设备自动挂载的文件。

5)系统登陆安全的日志。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第56张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第57张图片

遮挡部分:vip.taobao.com

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第58张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第59张图片

注意:

\{n,m\}:如果是egerp,可以没有\。

[^t]:匹配不含t的。

[^tea]:不含tea的。

^[^t]:以不是t的开头。

其他详情见cadn博客正则表达式。

正则表达式不是在每个命令下都能用的,一般就是三剑客用的比较多。我们所说的是linux的正则表达式,和开发语言的正则表达式还有所区别。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第60张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第61张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第62张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第63张图片

其中的ZZ是保存文件内容的命令。

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第64张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第65张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第66张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第67张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第68张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第69张图片

L017-老男孩Linux高端运维课程-linux系统定时任务crond入门讲解_第70张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(centos)