目录
第十一章 定时任务调度
11.1 crond 任务调度
crontab 进行 定时任务的设置
11.1.1 概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。
示意图
11.1.2 基本语法
crontab [选项]
11.1.3 常用选项
11.1.4 快速入门
案例一:每分钟调用执行一次这条指令 ls –l /etc/ > /tmp/to.txt
这条指令的意思是:将 ls –l /etc/(查看/etc/目录下面的文件列表信息) 的执行结果覆盖写入到 /tmp/to.txt文件。
步骤一:设置个人任务调度:执行 crontab –e 命令。
步骤二:接着输入任务到调度文件 如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思是 每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令
可以看到输出这句话,说明设置成功了。
接下来进入 /tmp 目录查看 有没有输出 to.txt 文件。
过了一分钟之后,可以看到生成了to.txt文件
使用more命令查看 to.txt文件的内容。可以看到这里面显示的就是/etc 目录下面的内容。
11.1.5 参数细节说明
5 个占位符的说明
特殊符号的说明
特殊时间执行案例
11.1.5 应用实例
案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
步骤一:执行命令,crontab -e
步骤二:输入调度任务,*/1 * * * * date >> /tmp/mydate
案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中
解决方案一:编写shell脚本文件,让crond定时执行这个脚本。
步骤:
(1) vim /home/my.sh 写入内容 date >> /home/mycal 和 cal >> /home/mycal
可以看到目前这个my.sh文件是没有执行权限的
(2) 给 my.sh 增加执行权限,chmod u+x /home/my.sh
赋予my.sh所有者可执行权限
执行my.sh脚本文件
查看mycal文件的内容。
(3)使用crond定时执行: crontab -e 增加 */1 * * * * /home/my.sh
*/1 * * * * /home/my.sh: 表示每隔一分钟执行一次 /home/my.sh脚本文件
可以看到,每隔一分钟 crond 后台程序就会帮我们执行一次 my.sh 脚本文件。
案例 3: 每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件中。提示: 指令为
mysqldump -u root -p 密码 数据库 > /home/db.bak
步骤(1) crontab -e
步骤(2) 0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
11.1.6 crond 相关指令
crontab –l:列出当前有那些任务调度conrtab –r:删除任务调度。
service crond restart [重启任务调度]
11.2 at 定时任务
11.2.1 基本介绍
- at 命令是一次性定时计划任务(只执行一次),at 的守护进程 atd 会以后台模式运行,检查作业队列来运行。
- 默认情况下,atd 守护进程每 60 秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
- 在使用 at 命令的时候,一定要保证 atd 进程的启动 , 可以使用相关指令来查看
- ps -ef | grep atd 这条指令可以检测 atd 是否在运行
6) 示意图
11.2.2 at 命令格式
at [选项] [时间]
输入Ctrl + D 结束 at 命令的输入, 输出两次
11.2.3 at 命令选项
11.2.4 at 时间定义
at 指定时间的方法
- 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
- 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间。
- 采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。 例如:12pm
- 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2021-03-1
- 使用相对计时法。指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。 例如:now + 5 minutes
- 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间。
11.2.5 应用实例
案例一:2 天后的下午 5 点执行 /bin/ls /home
案例二:atq 命令来查看系统中没有执行的工作任务
案例三:明天 17 点钟,输出时间到指定文件内 比如 /root/date100.log
案例四:2 分钟后,输出时间到指定文件内 比如 /root/date200.log
等待两分钟后,date200.log文件就被创建了。可以看到时间也被写进去了。
案例 5:删除已经设置的任务 , atrm 编号
atrm 5:表示将 job 队列,编号为 5 的 job 删除.
第十二章 Linux 磁盘分区、挂载
12.1 Linux 分区
12.1.1 原理介绍
1)Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
2)Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
3)示意图
12.1.2 硬盘说明
1)Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘
2)对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
3)对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样。例:sda1 表示 第一个SCSI硬盘的第一个分区。sda2 表示 第一个SCSI硬盘的第二个分区。sdb1 表示第二个SCSI硬盘的第一个分区。
12.1.3 查看所有设备挂载情况
命令 :lsblk 或者 lsblk -f
12.2 挂载的经典案例
12.2.1 说明
下面我们以增加一块硬盘为例来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念。
12.2.2 如何增加一块硬盘
- 虚拟机添加硬盘
- 分区
- 格式化
- 挂载
- 设置可以自动挂载
12.2.3 虚拟机增加硬盘步骤 1 (创建硬盘)
右击虚拟机,点击设置
点击添加
选择硬盘,点击下一步
选择 SCSI,点击下一步。 选择 创建新虚拟磁盘,点击下一步。
大小给个1G就可以了,点击下一步。 这里默认就可以了,点击完成。
点击确定。然后重启系统(才能识别)!
重启之后 ,输入 lsblk 可以看到多了一块硬盘 sdb。(现在还没有分区)
12.2.4 虚拟机增加硬盘步骤 2 (分区命令)
分区命令 fdisk /dev/sdb
命令列表:
m 显示命令列表
p 显示磁盘分区 同 fdisk –l
n 新增分区
d 删除分区
w 写入并退出
说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入 w写入分区并退出,若不保存退出输入 q。
开始分区
输入命令:fdisk /dev/sdb
输入m获取命令列表。
输入n,新增新的分区。
选择分区类型。
输入生成几个分区,输入1表示生成一个分区,输入2表示生成两个分区。
注意:这里一定要输入 w,否者前面设置的信息不会生效。
输入w,敲击回车。
输入命令 lsblk 查看分区情况
那么这个分区有了,能不能直接挂载呢?还不行,因为你还没有格式化,你要为这个分区指定文件类型。
12.2.5 虚拟机增加硬盘步骤 3 (格式化磁盘)
格式化磁盘
分区命令:mkfs -t ext4 /dev/sdb1
其中 ext4 是分区类型
输入命令: mkfs -t ext4 /dev/sdb1
再次查看分区情况,可以看到 sdb1 已经分配了一个唯一的UUID。索命sdb1已经被格式化了。
12.2.6 虚拟机增加硬盘步骤 4 (临时挂载)
挂载:将一个分区与一个目录联系起来
命令:mount 设备名称 挂载目录
例如:mount /dev/sdb1 /newdisk
卸载:umount 设备名称 或者 挂载目录
例如: umount /dev/sdb1 或者 umount /newdisk
挂载
卸载
注意: 用命令行挂载,重启后会失效。
重启之后再次查看分区信息。
12.2.7 虚拟机增加硬盘步骤 5 (永久挂载)
永久挂载:通过修改/etc/fstab 实现挂载
添加完成后 执行 mount –a 即刻生效
永久挂载
加上自己的挂载关系。修改好以后保存退出。
再次重启。你会发现它的挂载关系会一直存在的。
重启之后再次查看,挂载关系依然存在。
12.3 磁盘情况查询
12.3.1 查询系统整体磁盘使用情况
基本语法:df -h
应用实例
查询系统整体磁盘使用情况
12.3.2 查询指定目录的磁盘占用情况
基本语法:du -h /目录 (查询指定目录的磁盘占用情况,默认为当前目录)
选项说明:
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
应用案例:查询 /opt 目录的磁盘占用情况,深度为 1
12.4 磁盘情况-工作实用指令
1)统计/opt 文件夹下文件的个数
命令:ls -l /opt | grep "^-" | wc -l
2) 统计/opt 文件夹下目录的个数
命令:ls -l /opt | grep "^d" | wc -l
3) 统计/opt 文件夹下文件的个数,包括子文件夹里的
命令:ls -lR /opt | grep "^-" | wc -l
4) 统计/opt 文件夹下目录的个数,包括子文件夹里的
命令:ls -lR /opt | grep "^d" | wc -l
5) 以树状显示目录结构 tree 目录 。注意:如果没有 tree ,则使用 yum install tree 安装(如下)
注意:如果没有 tree ,则使用 yum install tree 安装