十二、定时任务

1.什么是程序和进程?

    程序:简单的说,我们使用的命令就是程序,比如:qq,二进制文件,MP3,linux系统等是程序,表现就是一个文件,一个代码等,就是一个静态的没有被运行,放在磁盘下。

    进程:简单的说,把系统中的程序运行起来,就是进程,放在内存中。每当我们输入一个命令的时候,shell也会启动一个进程。

    每当运行一个进程,系统就会指定一个唯一的数字给进程,为PID。

    每个进程都用两种形式:前台和后台。一般的守护进程就是在后台存在的,一般在杀死或者关机的情况下,才会停止的。一般守护进程都用端口,但是不一定所有的服务都有端口。

2.守护进程crond,在后台存在的服务,是linux定时任务服务。

    秒级任务:

    1)crond自身无能为力,但可以通过方法改进,具体百度下就可以了。

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

3.windows的定时任务很简单,开始----》任务计划程序--》建设任务

4.linux的定时任务分为2中:

   1)系统的定期执行的任务,在如下地方:

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

           at:适合突发性的定时任务,执行一次就结束了,在工作中甚少用,了解就行。依赖服务:atd

           anacron:适合非7*24小时开机的服务器准备的。检测停机期间没有执行的任务,在开机后一次执行一边,没什么价值,在工作中都是7*24小时的。

           crond:默认大小为每分钟都会去检查系统中有没有要执行的任务,并进行执行。依赖的服务是crond。而crontab是用户用来设置定时任务的命令。

5.crontab -e =vi var/spool/cron/用户名    (编译定时任务)

   crontab -l  =cat var/spool/cron/用户名    (查看定时任务)

6.可以通过/etc/cron.deny和/etc/cron.allow控制哪些用户能用crontab命令

7.用户的定时任务分成6段,系统分成7段, 对于时间段来讲,用户和系统是一样的

   如下:表示每5分钟,执行一次这个命令

   

8.定时任务没有端口,因为不向外界提供服务:如果有一天定时任务停止了,可能是服务没有开启

 9.命令:

     crontab -e =/var/spool/cron/用户名       (一般编辑的是root用户下,如果要查看其他用户的      crontab -u  其他用户  -e)

     visudo    =/etc/sudoers

10. >/dev/null 2>&1  =  &>dev/null   这两种写法都是可以的,表示不论对错,都添加到黑洞中,之所以这样写,当一个定时任务执行的时候,就会给系统发一封邮件。sendmail邮件服务,经常是关闭的,所以定时任务发送的邮件就会临时堆在/var/spool/clientqueue/,时间长了,文件数就特别多,都是小文件,消耗inode。Centos5上一定会有这个问题。所以随着版本的更新,即使没有邮件服务器,但是还是保持这种写法。

如图:每执行的话,都会给root发送邮件

11.定时任务的日志在/var/log/cron下,牢记!!!通过这个定时任务本身的日志,可以调试定时任务有没有执行,在哪里中断了,等信息。

12.在定时任务中

    1)一定要写注释;

    2)一定要有解释器命令;

    3)要是全路径的脚本;

    4)保持/dev/null

    所以工作中尽可能的将命令放到脚本中去。这样就可以用:

     1)>/dev/null 2>&1 ,命令行不能出现俩个>,这样是执行不了的

     2)命令行是不能用%的,无法识别,要用转移符的,所以为了避免这种情况,规范者来就要 放在脚本中,就ok了。

 13.关于10小点上所说的关于clientqueue

  测试:1 )  在Centos6上安装邮件服务  yum install sendmail -y

             2) ll /var/spool/clientmqueue/

             3)设置定时任务 且不加/dev/null 2>&1

             4)查看到/var/spool/clientmqueue有信息

            5)启动邮件服务:/etc/init.d/sendmail start ,发现/var/spool/clientmqueue下的文件消失

            6)关闭邮件服务,添加/dev/null 2>&1后,/var/spool/clientmqueue不在产生小文件。

  最后,这些小文件包括错误信息或者其他正确的信息都会放到/var/spool/clientmqueue下面,导致邮件服务器所在的磁盘inode满了,导致磁盘无法工作。如果没有安装邮件服务器是最好的,但是保持习惯,标准操作吧,还是加上比较好。

14.系统的定时任务:/etc/crontab,如果发现定时任务在执行,但是你找不到,极有可能是“猪”队友写在了这里,注意看下。

15.在定时任务中有一点要注意的地方:定时任务只能识别较少的全局环境,如果脚本中有全局环境变量,就要注意了。

原文地址:https://www.cnblogs.com/dangjingwei/p/10745699.html