【Linux】定时任务调度和磁盘管理

定时任务调度

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等。
2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。

基本语法

crontab [选项]

常用选项
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户的所有crontab任务
-u只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;

service crond restart #重启任务调度
占位符*的说明
项目说明范围
第一个*分钟0-59
第二个*小时0-23
第三个*1-31
第四个*月份1-12
第五个*一周中的星期几0-7(0和7都代表星期日)

案例1:
任务的要求:
设置任务调度文件:/etc/crontab
输入一段内容到调度文件,任务的内容为:ls –l /etc/ > /tmp/to.txt
每隔一分钟执行一次ls –l /etc/ > /tmp/to.txt

步骤:
1)crontab - e 进入编辑
在这里插入图片描述
2)输入 */ * * * * ls -l /etc/ > /tmp/to.txt,保存退出。
在这里插入图片描述
在每一分钟都会自动的调用 ls -l /etc/ >> /tmp/to.txt这个命令。
在这里插入图片描述
在这里插入图片描述
案例2:
用dmtsai的身份在每天的12:00发信给自己
crontab -e

0    12   *   *   *   mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分  时   日   月  周  |《==============命令行=======================》|(注释)
特殊符号的说明
*代表任何时间,比如第一个占位符为“*”则代表每小时的每分钟都执行一次
代表不连续的时间,比如“0 8,12,16 * * *”命令,代表在每天的8点0分,12点0分,16点0分都执行一次命令
-代表连续的时间范围,比如“0 5 * * 1-6”命令,代表在周一到周六的5点0分都执行
*/n代表每隔多久执行一次,比如“*/10 * * * *”命令,代表每隔10分钟就执行一遍命令
练习
命令含义
45 22 * * *在22点45分执行命令
0 17 * * 1每周一的17点0分执行命令
0 5 1,15 * *每月1号和15号的5点0分执行命令
40 4 * * 1-5每周一到周五的4点40分执行命令
*/10 4 * * *每天的4点,每隔10分钟执行一次命令
0 0 1,15 * 1每月1号和15号,每周一的0点0分都会执行命令。

注意:星期几和几号最好不要同时出现,因为他们定义的都是天,非常容易让管理员混乱

案例3:
每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
步骤:

  1. 先编写一个文件 /home/mytask1.sh 内容:
date >> /tmp/mydate
  1. 给 mytask1.sh 一个可以执行权限
chmod 744 /home/mytask1.sh
  1. 终端输入 crontab -e
  2. 输入:
*/1 * * * *	/home/mytask1.sh

在这里插入图片描述
5)成功
在这里插入图片描述
在这里插入图片描述
案例4:
每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中

步骤:

  1. 先编写一个文件 /home/mycal.sh 内容:
date >> /tmp/mycal
cal >>  /tmp/mycal
  1. 给 mytask1.sh 一个可以执行权限
chmod 744 /home/mytask1.sh
  1. 终端输入 crontab -e
  2. 输入:
*/1 * * * *	/home/mycal.sh

案例5:
每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件mydb.bak中.
步骤:

  1. 先编写一个文件 /home/mytask3.sh
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
  1. 给 mytask3.sh 一个可以执行权限
chmod 744 /home/mytask3.sh
  1. crontab -e
0 2 * * *	/home/mytask3.sh
  1. 成功

磁盘管理

硬盘:

整颗磁盘的组成主要有:

  • 圆形的磁盘盘(主要记录数据的部分);
  • 机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据);
  • 轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据。

磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的 GPT 分区表。

  • MBR分区表中,第一个扇区最重要,里面有:主要开机区及分区表,其中 开机区占有 446 bytes,而分区表则占有 64 bytes。最多支持四个主分区、系统只能安装在主分区、扩展分区要占一个主分区、MBR最大支持2TB,但拥有最好的兼容性。
  • GPT 分区表除了分区数量扩充较多之外,支持的磁盘容量也可以超过 2TB。支持无限多个主分区(说是这么说,但是操作系统可能会限制,比如Windows下最多128个分区)、最大支持18EB的超大容量、Windows7 64以后支持gtp。
分类
  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 硬盘的表示方法一样。

windows的分区

在这里插入图片描述

Linux 分区
  1. Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。
  2. Linux 采用了一种叫“挂载”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

我们知道整个Linux系统使用的是目录树架构,但是我们的文件数据其实是放置在磁盘分区槽当中的, 现在的问题是『如何结合目录树的架构与磁盘内的数据』呢? 这个时候就牵扯到『挂载』。

『挂载』就是利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下; 也就是说,进入该目录就可以读取该分区槽的意思。这个动作我们称为『挂载』,那个进入点的目录我们称为『挂载点』。 由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区槽的。 至于其他的目录则可依用户自己的需求来给予挂载到不同的分区槽。我们以下图来作为一个说明:
在这里插入图片描述
图中假设我的硬盘分为两槽,partition 1是挂载到根目录,至于partition 2则是挂载到/home这个目录。 这也就是说,当我的数据放置在/home内的各次目录时,数据是放置到partition 2的,如果不是放在/home底下的目录, 那么数据就会被放置到partition 1了!

想一想,我的计算机系统如何读取光盘内的数据呢?在Windows里面使用的是『光驱』的代号方式处理(假设为E槽时), 但在Linux底下我们依旧使用目录树喔!在默认的情况下,Linux是将光驱的数据放置到/media/cdrom里头去的。 如果光盘片里面有个文件文件名为『我的文件』时,那么这个文件是在哪里?
答:
windows: 桌面\我的计算机\E:\我的文件
Linux: /media/cdrom/我的文件

查看当前系统的分区情况

指令

lsblk [-f ]

在这里插入图片描述
在这里插入图片描述

案例:添加硬盘【重要】

需求:给Linux 系统增加一个新的硬盘,并且挂载到/home/newdisk

原理:新增一块硬盘sdb1,并挂载到/home/newdisk,此时对/home/newdisk的操作其实就是在操作sdb1这块硬盘。

步骤:

  1. 虚拟机添加名为sdb的硬盘
    在这里插入图片描述
    注意: 当添加硬盘后使用 lsblk -f 发现并没有叫sdb的硬盘,需要重启才能看到。

  2. 分区

    1. 分区命令

    fdisk 硬盘位置

    1. 开始对/sdb 分区
      *m  显示命令列表
      *p  显示磁盘分区  与fdisk -l效果相同
      *n  新增分区
      *d  删除分区
      *w  写入并退出
      说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q。
      在这里插入图片描述
  3. 格式化磁盘
    分区命令:

    mkfs -t ext4 硬盘位置
    其中 ext4 是分区类型

  4. 挂载: 将一个分区与一个目录联系起来
    • mount 设备名称 挂载目录
    • 例如: mount /dev/sdb /newdisk
    • umount 设备名称 或者 挂载目录
    • 例如: umount /dev/sdb 或 者 umount /newdisk

  5. 永久挂载
    通过修改/etc/fstab 实现挂载添加。完成后 执行 mount –a 即刻生效。

磁盘情况查询

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

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

基本语法

df [选项] [目录或文件名]

选项与参数:

-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H:以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i:不用硬盘容量,而以 inode 的数量来显示

应用实例
案例:查询系统整体磁盘使用情况。
首先将系统内所有的文件系统列出来,然后将容量结果以易读的容量格式显示出来。
在这里插入图片描述

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

du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。
语法:

du [选项] 文件或目录名称

选项与参数:
-a:列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h:以人们较易读的容量格式 (G/M) 显示;
-c : 列出明细的同时,增加汇总值;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m:以 MBytes 列出容量显示;
--max-depth=1 子目录深度;

案例:
查询 /redis-4.0.8 目录的磁盘占用情况,深度为 1
在这里插入图片描述
只列出当前目录下的所有文件夹容量(包括隐藏文件夹):

du

将文件的容量也列出来

du -a

检查根目录底下每个目录所占用的容量

du -sm /*

统计/home 文件夹下文件的个数

 ls -l /home | grep "^-" | wc -l

统计/root文件夹下文件的个数

 ls -l /home | grep "^d" | wc -l

统计/home文件夹下文件的个数,包括子文件夹下的

ls -lR /home | grep "^-" | wc -l

统计文件夹下目录的个数,包括子文件夹里的

ls -lR /home | grep "^d" | wc -l

以树状显示目录结构

tree
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程芝士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值