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
设置个人任务调度指令:
crontab -e
接着输入任务到调度文件,如:
*/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 | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-I | atq 的别名 |
-d | atrm 的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q 指定队列 | 使用指定队列 |
-f 文件 | 从指定文件读入任务而不是从标准输入读入 |
-t 时间参数 | 以时间参数的形式提交要运行的任务 |
at 指定时间的方法:
- 接受在当天的 hh:mm(小时:分钟)式的时间指定,假如该时间已过去,那么就在第二天执行
- 使用 midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间
- 采用12小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午
- 指定命令执行的具体日期,指定格式为:month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面
- 使用相对计时法,指定格式为:now + count time-untis,now 就是当前时间,time-untis 是时间单位,这个单位可以是:minutes(分钟)、hour(小时)、days(天)、weeks(星期)。count 是时间的数量。
- 直接使用 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定时任务调度的主要内容,如果未能解决你的问题,请参考以下文章