• 十二、定时任务


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

  • 相关阅读:
    模板元编程实现素数判定
    JDBC开发
    4.9 当相应行存在时更新
    QT5中如何使用QFtp类(这个类虽然没有被收录,但一直在更新)
    gcc和g++的区别
    Awesome C/C++(图像部分)
    Ubuntu更新源
    GO的GDB调试
    内核探测工具systemtap简介
    列举一下项目中使用的产品和技术
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/10745699.html
Copyright © 2020-2023  润新知