• [轻松学会shell编程]-5、计划任务


    1、计划任务

    创建和管理在指定时间自动执行的任务

    注意事项:要使任务计划在指定时间自动运行,计划任务的服务必须使启动的。

    1.1、计划任务的分类 

    • 使用at命令调用atd进程设置在某个特定的时间,执行一次任务
    • 使用crontab命令调用crond进程,设置按固定的周期(如每天,每周等)重复执行预先计划好的任务

    crond进行是一直在运行的

    1. [root@fttswlp ~]# ps aux|grep crond
    2. root 693 0.0 0.0 126384 1624 ? Ss 13:16 0:00 /usr/sbin/crond -n

    1.2、守护进程(Daemon)

    定义:一直在内存里运行的进程,直到我们人为的停止它的运行,不然它是一直在内存中运行的。因为一直在内存里运行,所以我们的用户可以随时去访问。

    我们若是用"ps aux"命令来查看,会看到很多带末尾带"d"的进程,那么这些进程就是守护进程。

    1.2.1、进程的五态

    上面的守护状态,是一直在"运行"、"阻塞"、"就绪"这三种状态中循环往复的。

    1.3、at命令

    定义:在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务

    • 系统服务的名称:/etc/init.d/atd
    • 设置格式 :at [HH:MM] [yyyy-mm-dd]

    设置任务的时候,首先我们要先启动std进程,不然就不会定时的去执行计划任务。

    1. [root@fttswlp rough_book]# service atd start
    2. Redirecting to /bin/systemctl start atd.service
    1. [root@fttswlp rough_book]# ls
    2. [root@fttswlp rough_book]# at 21:58
    3. at> mkdir fan$RANDOM
    4. at> <EOT> # 使用ctrl+d,提交计划任务
    5. job 1 at Thu Jun 23 21:58:00 2022
    6. # 查看当前的计划任务列表
    7. [root@fttswlp rough_book]# at -l
    8. 1 Thu Jun 23 21:58:00 2022 a root
    9. # 等到了21:58,你可以看到有一个新建的文件。
    10. [root@fttswlp rough_book]# ls
    11. fan28985
    12. # 删除计划任务编号为2的任务,atrm等价于at -d
    13. [root@fttswlp rough_book]# atrm 2

    1.3.1、计划任务的存储地方

    存放任务的地方:/var/spool/at

    1. [root@fttswlp rough_book]# at -l
    2. 4 Thu Jun 23 22:03:00 2022 a root
    3. [root@fttswlp rough_book]# ls /var/spool/at
    4. a0000401a5240b spool
    5. # 原理就是atd这个进程到了时间,就会去执行/var/spool/at中对应a开头的文件。。因为linux里面一切接文件。任务一旦执行完毕,文件就会消失。

    1.3.2、batch

    batch是和at差不多的计划任务命 令。batch会自动在系统负载不高的时候运行。那么什么时候不忙呢?就是平均负载小于0.8

    1. [root@fttswlp rough_book]# top
    2. top - 22:10:28 up 8:54, 5 users, load average: 0.00, 0.01, 0.05
    3. # 查看系统开机多久了,以及系统的平均负载
    4. [root@fttswlp rough_book]# uptime
    5. 22:10:51 up 8:54, 5 users, load average: 0.00, 0.01, 0.05
    6. # load average后面的这三个数字表示:在1、5、15分钟的平均负载
    7. # 这两个命令都可以查看系统的负载

    平均负载:是一段时间内(1、5、15分钟)可运行的或不可中断的进程的平均数量。可以理解为就绪队和运行、阻塞里的进程的数量。这个值的多少跟CPU的核有关系。

    man uptime:查看uptime手册可以看到以下关于系统平均负载的内容

    System  load  averages  is the average number of processes that are either in a runnable or uninter‐ ruptable state.  A process in a runnable state is either using the CPU or waiting to use the CPU.  A process  in uninterruptable state is waiting for some I/O access, eg waiting for disk.  The averages are taken over the three time intervals.  Load averages are not normalized for the number of CPUs in a  system,  so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPUsystem it means it was idle 75% of the time.

    系统平均负载是指处于可运行状态或不可中断状态的过程的平均数量。 处于可运行状态的进程正在使用CPU,或者正在等待使用CPU。 处于不可中断状态的进程正在等待一些I/O访问,例如等待磁盘。 取三个时间间隔的平均值。 平均负载不是按照系统中CPU的数量进行规范化的,所以平均负载为1意味着单个CPU系统一直处于加载状态,而CPU数量为4个CPU系统,它意味着75%的时间是空闲的。

    2、crond进程

    crond进程是每隔1分钟就去检查用户的计划任务;crond默认安装的且开机会自动运行。详细的可以查看下面这个博客。

    [linux]三、计划任务(crontab、黑客怎么用计划任务获取我们的东西以及怎么排查、前台和后台、anacron服务)_FanMY_71的博客-CSDN博客

  • 相关阅读:
    基于sanic的服务使用celery完成动态修改定时任务
    shiro 框架使用实例
    AttributeError: module ‘xxx‘ has no attribute
    阿里P8大佬内部亲授Redis笔记,深入挖掘其原理
    七天.NET 8操作SQLite入门到实战 - SQLite 简介
    ubuntu16.04安装虚拟摄像头用于webrtc测试
    【Leetcode】【每日一题】【中等】1465. 切割后面积最大的蛋糕
    【Shell脚本 6】日常巡检脚本-1
    Hover:借贷新势力崛起,在经验与创新中找寻平衡
    对角线的输出
  • 原文地址:https://blog.csdn.net/m0_48638643/article/details/125435409