作者:Carrie
出处:https://home.cnblogs.com/u/hanjiali
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

6.1.程序和进程的概念

程序:
是为了解决一个信息处理任务而预先的编制的工作指向方案,是由一串CPU能够执行的基本指令组成的序列,每条指令规定了计算机应进行什么操作及需要相关的有关数据。

简单的说,我们使用的命令就是程序

进程概念:

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

进程特点:

进程启动时,系统会指定一个唯一的数值给每一个进程,数值称为进程(ID)

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

系统的服务都是以后台的方式存在,且都会常驻在系统中,直到关机为止,例如sshd.

 

6.2  Linux系统crond定时任务介绍

 

6.2.1定时任务的基础学习-了解定时任务

1.crond是什么?

Crond是linux系统中用来定期执行命令和或者指定程序任务的一种服务,或者软件,一般在我们安装系统的时候,crond就默认存在。

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

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

企业环境定时任务

2.为什么需要定时任务?
服务器:7*24小时开机提供服务是网站的基本特征。

服务器有重要的数据:最低一天备用一次,或者每分钟增量备份一次,半夜备份。所以定时任务就产生,定时有个备份程序,触发定时任务,就会执行备份。

  1. 定时任务的分类

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

[root@localhost logrotate.d]# ll /etc/|grep cron
-rw-------.  1 root root    541 7月  27 2015 anacrontab
drwxr-xr-x.  2 root root     20 9月  13 21:57 cron.d
drwxr-xr-x.  2 root root     62 9月  13 21:57 cron.daily
-rw-------.  1 root root      0 7月  27 2015 cron.deny
drwxr-xr-x.  2 root root     44 9月  13 21:57 cron.hourly
drwxr-xr-x.  2 root root      6 6月  10 2014 cron.monthly
-rw-r--r--.  1 root root    451 6月  10 2014 crontab
drwxr-xr-x.  2 root root      6 6月  10 2014 cron.weekly

  

系统自身轮训任务

[root@localhost ~]# ll /var/log/messages*
-rw-------. 1 root root 225390 9月  24 16:50 /var/log/messages
-rw-------. 1 root root 449608 9月  19 05:45 /var/log/messages-20190919
-rw-------. 1 root root 403290 9月  23 17:30 /var/log/messages-20190923
[root@localhost ~]# ll /var/log/secure*
-rw-------. 1 root root 2827 9月  24 16:47 /var/log/secure
-rw-------. 1 root root 3694 9月  19 05:19 /var/log/secure-20190919
-rw-------. 1 root root 2070 9月  23 16:16 /var/log/secure-20190923
系统轮询的日志-定时轮询
[root@localhost logrotate.d]# less /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
Weekly //每周

# keep 4 weeks worth of backlogs //保持四周
rotate 4

# create new (empty) log files after rotating old ones //老文件过期创建一个新文件
create

# use date as a suffix of the rotated file //使用扩展的日期轮回文件
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory 
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

  

       2) 用户自身完成的定时任务

 

 

 2.       定时任务的了解

1)      At适合执行一次就结束的调度任务,突发性任务。

2)      Anacron适合于非7*24小时的服务器准备的。开机执行的工作,会检测到关机时应该执行但是未执行的任务,在开机后一次性执行一遍。(了解)

3)      Crond服务7*24小时,只要服务器需要执行的,每分钟都可以执行。

注意:crond是一个定时任务的进程,而crontab是用户用来设置定时任务规则的命令。

 3.      定时任务的书写指令的使用格式

用户的定时任务分为六段

 

 

 

对于时间段来说,前五段都一样。

系统的定时任务分为八段

 

前四行是用来配置crond任务运行的环境变量

第一行SHELL变量指定了系统要使用哪个shell,这里是bash

第二行PATH变量指定了系统执行命令的路径

第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户

如果MAILTO变量的值为空,则表示不发送任务执行信息给用户

第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

分时日月星

星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。

 

(00 23 * * *--每晚23时执行)

(00 17-19 * * * --每晚17-19时执行)

(*/5 * * * *--每隔五分钟执行一次)

(30 3,12 * * *--每天凌晨三点到中午12点半)

(30 8-18/2 * * * --早上八点到下午六点半每隔两个小时执行一次)

(45 4 1,10,22 * *--每月的1日10日22日的凌晨4点45分执行)

(10 1 * * 6,0—每周六周日的凌晨1点十分执行)

(* 23,00-07/1 * * *--每天23点,凌晨12点到早晨7点每小时每一分钟执行一次)

(5月5号上午九点执行:00 09 05 05 *)

(每周日,上午9:30执行:30 09 * * 0)

注意:周和日不要同时用,否则可能达不到想要的效

 

 

6.3  crontab定时任务生产应用问题7箴言

1、   系统环境变量问题

 Crontab执行shell只能识别为数不多的系统环境变量,一般用户定义的普通变量是无法识别的,如果在编写脚本中需要使用这些变量,最好使用export重新声明下该脚本才能正常执行。

2、   定时任务要用绝对路径

Crontab执行shell时,如果shell路径是相对路径或者shell里含有的绝对路径,此时 就会找不到文件。

3、  脚本权限问题加/bin/sh

要保证crontab的执行者有访问shell脚本所在的目录并且执行此shell脚本的权限,最佳的方法就是执行脚本前加/bin/sh,否则有可能因为忘了为脚本设定执行权限,而无法完成任务。

4、 时间变量问题用反斜线

“%”号在crontab任务配置中被认为是newline。需要用“\”来转义。Crontab任务命令中,如果有“date+%Y%m%d”,必须替换为  “date+\%Y\%m\%d”

5、 >/dev/null2>&1问题

当定时任务在你所指定的时间执行,系统会寄信给你,显示该程序执行的内容,若系统未开启邮件服务就会导致邮件临时目录/var/spool/clientqueue碎文件件逐渐增加,wei此命令为了防止占满inode.   

6、  定时任务定时规范之前加注释

写定时任务加注释,什么人物,什么时间,因为什么事,干了什么,都要记得清清楚楚。

7、  避免不必要的程序及命令的输出

在开发定时任务程序和脚本时,在调试好脚本程序后,应尽量把DEBUG及命令输出的内容信息屏蔽掉,如果需要,可指向到定时日志文件里,以避免多余的系统垃圾。    

 

posted on 2019-09-25 09:43  不吃葡萄楞吐皮  阅读(233)  评论(0编辑  收藏  举报