19. Linux的at定时任务调度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19. Linux的at定时任务调度相关的知识,希望对你有一定的参考价值。

参考技术A 与crond不同的是,at任务调度是一次性的,而crond是重复性的

1.1 at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行

1.2 默认情况下,atd守护进程每60s检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

1.3 at命令是一次性定时计划任务,执行完一个任务后就不再执行这个任务了

1.4 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令查看

    ps -ef | grep atd 可以检查atd是否在运行

at [选项] [时间]

按两次 ctrl+d 结束at命令的输入

4.1 当天的hh:mm(小时:分钟),假如这个时间已经过去,那么就第二天的这个时间执行。例如04:00

4.2 模糊的词语,例如midnight、noon、teatime(下午茶时间,16:00左右)

4.3 采用12小时计时制,例如8am

4.4 指定执行命令的具体日期,格式为month dat(月 日)或者mm/dd/yy或者dd.mm.yy,指定的日期必须跟着写在在指定时间的后面,例如:04:00 2021-3-1就是2021年3月1日凌晨4点整执行

4.5 相对计时法,指定格式为now + count time-units,now就是当前时间,time-units是时间单位,可以是minutes、hours、days、weeks。count是时间的数量,例如:now + 5 minutes

4.6 直接用today、tomorrow来指定完成命令的时间

5.1 2天后的下午5点,执行/bin/ls /home指令

at 5pm + 2 days 按回车键

然后写下那个时刻要执行命令 /bin/ls /home

最后按两次ctrl+d退出at指令

5.2 atq指令可以直接执行,查看系统中待执行的工作任务

5.3 明天17:00输出时间到指定文件内 /root/date100.log

at 17:00 tomorrow 按回车键

date > /root/date100.log

按两次ctrl+d退出at指令的输入

5.4 2分钟后

at now + 2 minutes

5.5 删除已经设置的任务,atrm 编号

可以用atq列出待执行的任务,列出后第一列就是job编号

Linux 初学篇定时任务调度和Linux 磁盘分区挂载

前言: 本文是听的b站韩顺平老师 linux 课程的 52~62 集所做的笔记,大家可以配套该文章学习韩老师的 Linux 课程。大家可以收藏起来,以后要用时,随用随查。

1. crond 任务调度

什么是任务调度呢?

是指系统在某个时间执行的特定的命令或程序

任务调度分类

  • 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等
  • 个别用户工作:个别用户可能希望执行某些程序,如对 mysql 数据库的备份

1.1 crontab 进行定时任务的设置

指令:crontab [选项]

常用选项:

选项描述
-e编辑 crontab 定时任务
-l查询 crontab 任务
-r删除当前用户所有的 crontab 任务

示例一:我们如果要将这个任务 ls -l /etc/ > /tmp/to.txt

  1. 设置个人任务调度指令:crontab -e

  2. 接着输入任务到调度文件,如:*/1**** ls -l /etc/ > /tmp/to.txt

    其中5个 “*” 号占位符说明:

    含义
    第一个 “*”一小时当中的每分钟都执行一次0-59(*/1:表示每隔一分钟执行一次)
    第二个 “*”一天当中的每小时都执行一次0-23
    第三个 “*”一个月当中的每天都执行一次1-31
    第四个 “*”一年当中的每个月都执行一次1-12
    第五个 “*”一周当中的每个星期都执行一次0-7(0和7都代表周日)

    特殊符号说明:

    特殊符号含义
    *代表任何时间。比如第一个 “*” 就代表一小时每分钟都执行一次的意思
    ,代表不连续时间,如 0 8,12,16 * * * 命令 代表在每天的8点0分,12点0分,16点0分都执行一次命令
    -代表连续时间范围,如 0 5 * * 1-6 命令 代表在周一到周六的凌晨5点0分执行命令
    */n代表每隔多久执行一次,如 */10 * * * * 命令 代表每隔10分钟就执行一遍命令

1.2 at 定时任务

介绍:

  • at 命令是一次性定时任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行
  • 默认情况下,atd 守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
  • at 命令时一次性定时计划任务,执行完成一个任务后不会再执行此任务了
  • 在使用 at 命令时,一定要保证 atd 进程的启动,可以使用相关指令来查看

指令:at [选项] [时间]

结束 at 命令输入指令:ctrl + d(输入两次)

检测当前所有运行的进程信息指令:ps -ef

检查当前有无运行的 atd 进程指令:ps -ef | grep atd

选项介绍:

选项含义
-m当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-Iatq 的别名
-datrm 的别名
-v显示任务将被执行的时间
-c打印任务的内容到标准输出
-V显示版本信息
-q 指定队列使用指定队列
-f 文件从指定文件读入任务而不是从标准输入读入
-t 时间参数以时间参数的形式提交要运行的任务

at 指定时间的方法:

  1. 接受在当天的 hh:mm(小时:分钟)式的时间指定,假如该时间已过去,那么就在第二天执行
  2. 使用 midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间
  3. 采用12小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午
  4. 指定命令执行的具体日期,指定格式为:month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面
  5. 使用相对计时法,指定格式为:now + count time-untis,now 就是当前时间,time-untis 是时间单位,这个单位可以是:minutes(分钟)、hour(小时)、days(天)、weeks(星期)。count 是时间的数量。
  6. 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间

2. Linux 磁盘分区、挂载

2.1 分区原理

  • Linux 无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。Linux 中每个分区都是用来组成整个文件系统的一部分。

  • Linux 采用了一种叫”载入“的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

2.2 硬盘说明

  • Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘

  • 对于 IDE 硬盘,驱动器标识符为 hdx~,其中

    • hd :表明分区所在设备的类型,这里是指 IDE 硬盘

    • x :为盘号(a:基本盘,b:基本从属盘,c:辅助盘,d:辅助从属盘)

    • ~ :代表分区,前四个分区用数字1到4表示,它们是主分区或扩展区,从5开始就是逻辑分区。

    • 示例1:hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区

    • 示例2:hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区

  • 对于 SCSI 硬盘,驱动标识符为 sdx~

    SCSI 硬盘是用 sd 来表示区分所在的设备的类型,其余则和 IDE 硬盘的表示方法一样

2.3 增加一块硬盘的方式

2.3.1 虚拟机添加硬盘

在虚拟机菜单中,选择设置,然后设备列表里添加硬盘,然后一路下一步,中间只有选择磁盘大小的地方需要修改,直到完成。然后重启系统

2.3.2 分区

分区指令:fdisk /dev/磁盘名

输入上述指令开始对新磁盘进行分区操作:

开始分区后输入n,新增分区,然后选择p,让分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出

一些分区操作选项:

m:显示命令列表

p:显示磁盘分区

n:新增分区

d:删除分区

w:写入并退出

注意:

分区最后一定要输入w写入并退出,如果不保存退出则输入q

2.3.3 格式化(给分区指定文件类型)

格式化磁盘分区指令:mkfs -t 文件类型 /dev/分区名

2.3.4 挂载

挂载就是将一个分区与一个目录联系起来

挂载指令:mount 设备名称 挂载目录

示例:mount /dev/sdb1 /newdisk/

卸载指令:umount 设备名称umount 挂载目录

注意:

  • 卸载后原来分区内存放的文件一九存在
  • 用命令行挂载后,如果重启之前挂载的就会失效

2.3.5 设置可以自动挂载/永久挂载

通过修改 /etc/fstab 实现永久挂载

先 vim /etc/fstab,然后在里面添加要挂载的信息。如图

红框框的为添加的挂载信息,UUID 那块除了写挂载时的 UUID,也可以写 设备名称。

最后再保存退出

添加完成后,再执行 mount -a ,则即刻生效

2.4 磁盘情况实用指令

2.4.1 查看所有设备挂载情况

指令:lsblk 或 `lsblk -f

2.4.2 查询系统整体磁盘使用情况

指令:df -h

2.4.3 查询指定目录的磁盘占用情况

指令:du -h /目录(不带目录的话默认为当前目录)

常用参数:

-s:指定目录占用大小汇总

-h:带计量单位

-a:含文件

--max-depth=1:子目录深度为1

-c:列出明细的同时,增加汇总量

2.4.4 统计某个目录文件夹下文件的个数

指令1:ls -l 目录 | grep "^-" | wc -l (不包含子文件夹里的)

指令2:ls -lR 目录 | grep "^-" | wc -l (包含子文件夹里的)

2.4.5 统计某个目录文件夹下目录的个数

指令1:ls -l 目录 | grep "^d" | wc -l (不包含子文件夹里的)

指令:ls -lR 目录 | grep "^d" | wc -l (不包含子文件夹里的)

2.4.6 以树状显示目录结构

指令:tree 目录

注意:

如果没有 tree,则需要通过指令 yum install tree 进行安装

以上是关于19. Linux的at定时任务调度的主要内容,如果未能解决你的问题,请参考以下文章

Linux05(定时调度任务,crond和at,磁盘分区挂载,磁盘情况查询和实用指令)

怎么在linux系统里设置延时/定时任务?

Linux 初学篇定时任务调度和Linux 磁盘分区挂载

Linux系统管理-定时任务

Linux 定时计划任务

linux定时执行任务