Linux的基础命令(6)-磁盘管理&计划任务

一、计划任务

1、crontab命令

作用:设定周期性计划任务 语法: crontab 【选项】 {用户} 牢记: 分是日月周命令 选项: -e:编辑 -r:删除 -l:查看任务列表 -u:指定用户使用 注意: 命令:最好使用绝对路径-->结合which命令查找路径 *:匹配任意范围任意时间 ,:分割多个不连续的时间 -:指定连续的时间范围 /n:每个多少时间执行   计划任务: 备份网站、备份数据库、日至切割、释放内存、重启服务、时间同步、网站代码同步、
#每一分钟执行echo `date`
[root@rhel8 data]# which echo
/usr/bin/echo
[root@rhel8 data]# crontab -e
* * * * * /usr/bin/echo `date` >> /data/date.crond


#查看一下任务列表
[root@rhel8 data]# crontab -l
* * * * * /usr/bin/echo `date` >> /data/date.crond

#查看有没有执行
[root@rhel8 data]# tail -f /data/date.crond 
Fri Jan 8 20:30:01 CST 2021
Fri Jan 8 20:31:01 CST 2021

#删除计划任务
[root@rhel8 data]# crontab -r
[root@rhel8 data]# crontab -l
no crontab for root

#每隔2个小时的第三分和第五钟执行命令/usr/bin/echo `date` >> /data/date.crond
[root@rhel8 data]# crontab -e
no crontab for root - using an empty one
3,5 */2 * * * /usr/bin/echo `date` >> /data/date.crond

#查看其它用户的任务列表
[root@rhel8 data]# crontab -l   #查看root的任务列表
no crontab for root
[root@rhel8 data]# crontab -l -u zhangsan   #查看zhangsan用户的任务列表
no crontab for zhangsan
对应的配置文件:
[root@rhel8 data]# ls /etc/cron
cron.d/       cron.deny     cron.monthly/ cron.weekly/  
cron.daily/   cron.hourly/  crontab   

#计划任务的配置文件-->指定是怎么用的
[root@rhel8 data]# vim /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,f
ri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

#/etc/cron.d/下也是配置文件
[root@rhel8 data]# ll /etc/cron.d/
total 8
-rw-r--r--. 1 root root 128 Oct  2  2018 0hourly
-rw-r--r--. 1 root root 108 Jan 11  2019 raid-check

#/etc/cron.daily:天计划任务
#/etc/cron.hourly:小时
#/etc/cron.monthly:月
#/etc/cron.weekly:周


#直接拒绝谁不能使用crontab命令
[root@rhel8 data]# vim /etc/cron.deny 
zhangsan
保存退出

#切换张三测试
[root@rhel8 data]# su - zhangsan
[zhangsan@rhel8 ~]$ crontab -e 
You (zhangsan) are not allowed to use this program (crontab)
See crontab(1) for more information

扩展:

 

 # 每个星期一的上午8点到11点的第3和第15分钟执行command
 3,15 8-11 * * 1 command

 #每晚的21:30 执行command
 30 21 * * * command
    
 #每月1、10、22日的4 : 45执行command
 45 4 1,10,22 * * command
 
#每周六、周日的1 : 10执行command 
10 1 * * 6,0 command

#每天18 : 00至23 : 00之间每隔30分钟执行command  
*/30 18-23 * * * command

#晚上11点到早上7点之间,每隔一小时执行command
* 23-7/1 * * * command

#每月的4号与每周一到周三的11点执行command
* 11 4 * 1-3 command

 

 

 

2、一次性计划任务at

at命令 作用:一次性定时任务列表 语法: at 【选项】 时间(19:00 2021-01-08) 按ctrl+d结束 选项: -m:任务被完成后发送邮件给用户 -l:查看任务列表 -f:从文件中读取 atrm:删除任务列表,atrm 数字 atq:查看任务列表
#设定任务列表-->指定晚上执行任务
[root@rhel8 data]# at 22:00
warning: commands will be executed using /bin/sh
at> ls /etc/passwd
at> <EOT>
job 1 at Fri Jan  8 22:00:00 2021

#指定3天后的岸上22:00执行命令
[root@rhel8 data]# at 22:00+3 days
warning: commands will be executed using /bin/sh
at> ls -l /etc/passwd 
at> <EOT>
job 2 at Mon Jan 11 22:00:00 2021

#查看任务列表
[root@rhel8 data]# at -l
1    Fri Jan  8 22:00:00 2021 a root
2    Mon Jan 11 22:00:00 2021 a root
[root@rhel8 data]# atq
1    Fri Jan  8 22:00:00 2021 a root
2    Mon Jan 11 22:00:00 2021 a root

#删除任务列表
[root@rhel8 data]# atrm 1
[root@rhel8 data]# atq
2    Mon Jan 11 22:00:00 2021 a root
[root@rhel8 data]# atq
2    Mon Jan 11 22:00:00 2021 a root
[root@rhel8 data]# atrm 2
[root@rhel8 data]# at -l

二、磁盘管理

1、磁盘介绍:

扇区是磁盘的最小组成单元-->默认是512字节 机械硬盘: 有可能是物理修复;需要在无尘环境下物理恢复; 如果再次写入内容,修复的难度 很大; 如果需要彻底删除,有可能使用到物理破坏;

2、硬盘与分区

Linux:硬盘使用的过程 系统需要识别硬盘-->规划好分区-->格式化分区-->挂载使用   文件系统类型: Windows:NTFS,FAT32 FAT32:最多支持16TB的文件系统和单个4GB的文件 NTFS:最大支持16EB的文件系统 Linux:ext3、ext4、xfs ext2:早期的linux系统,适用于分区容量小,更新不平凡的分区,如/boot分区 ext3:ext2的改进版,支持日志功能,可以查阅系统非正常关机导致的异常,并且回复 ext4:ext最新版,速度提升了,最大支持1EB的文件系统 xfs:支持最大8EB的文件系统 swap:交换分区,内存不够用的时候,分硬盘作为内存容量使用 ios9660:光盘挂载的格式 btrfs:oracle使用的文件系统 MBR分区: 硬盘可以有4个主分区-->/dev/sd[1-4] 最多可以有1个扩展分区 逻辑分区是在扩展分区之上划分的-->/dev/sd5以上

3、硬盘在Linux下的标识

SCSI设备:/dev/sd IDE设备:/dev/hd 虚拟设备:/dev/vd nvme:/dev/nvme
#查看系统的硬盘类型
[root@rhel8 data]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1  6.6G  0 rom  
nvme0n1       259:0    0   20G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]

[root@rhel8 data]# fdisk -l | grep /dev/nvme0
Disk /dev/nvme0n1: 20 GiB, 21474836480 bytes, 41943040 sectors
/dev/nvme0n1p1 *       2048  2099199  2097152   1G 83 Linux
/dev/nvme0n1p2      2099200 41943039 39843840  19G 8e Linux LVM

 

实验:

实验:Linux系统添加硬盘--MBR格式

第一步:虚拟机关机 [root@rhel8 data]# shutdown -h now   第二步:添加硬盘 虚拟机-->设置-->添加-->选择硬盘-->默认下一步-->完成-->开机   第三步: 查看是否识别硬盘
[root@rhel8 ~]# fdisk -l |  grep -i disk
Disk /dev/nvme0n1: 20 GiB, 21474836480 bytes, 41943040 sectors
Disklabel type: dos
Disk identifier: 0x25bb1eb9
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/nvme0n3: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/mapper/rhel-root: 17 GiB, 18249416704 bytes, 35643392 sectors
Disk /dev/mapper/rhel-swap: 2 GiB, 2147483648 bytes, 4194304 sectors
第四步:对硬盘进行分区
[root@rhel8 ~]# fdisk /dev/nvme0n2 
#################
Command (m for help): n              #创建分区
########
Select (default p): p                #指定主分区
########
Partition number (1-4, default 1):    #默认分区编号为1
############
First sector (2048-41943039, default 2048):    #默认扇区
######  指定分区大小
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +2G
##########
Command (m for help): p         #查看默认好的分区
###############
Command (m for help): w         #保存分区
第五步:让内核识别分区

    [root@rhel8 ~]# partprobe

第六步: 格式化分区
[root@rhel8 ~]# mkfs.xfs /dev/nvme0n2p1
meta-data=/dev/nvme0n2p1         isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
第七步:创建目录并且挂载
[root@rhel8 ~]# mkdir /nvme2
[root@rhel8 ~]# mount /dev/nvme0n
nvme0n1    nvme0n1p1  nvme0n1p2  nvme0n2    nvme0n2p1  nvme0n3    
[root@rhel8 ~]# mount /dev/nvme0n2p1 /nvme2/
[root@rhel8 ~]# df -h | grep /nvme2
/dev/nvme0n2p1         2.0G   47M  2.0G   3% /nvme2
第八步:写入开机自启动文件/etc/fstab
[root@rhel8 ~]# vim /etc/fstab 
##########
/dev/nvme0n2p1  /nvme2  xfs     defaults        0 0
设备文件        挂载点    文件系统   默认     是否开机检测,0为不检测;1为检测

[root@rhel8 ~]# mount -a

实验:添加硬盘--GPT格式

如果硬盘是比较大的,大于2TB的硬盘都会使用到GPT格式   第一步:虚拟机关机

  [root@rhel8 data]# shutdown -h now

第二步:添加硬盘 虚拟机-->设置-->添加-->选择硬盘-->默认下一步-->完成-->开机   第三步: 查看是否识别硬盘
[root@rhel8 ~]# fdisk -l |  grep -i disk
Disk /dev/nvme0n1: 20 GiB, 21474836480 bytes, 41943040 sectors
Disklabel type: dos
Disk identifier: 0x25bb1eb9
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/nvme0n3: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/mapper/rhel-root: 17 GiB, 18249416704 bytes, 35643392 sectors
Disk /dev/mapper/rhel-swap: 2 GiB, 2147483648 bytes, 4194304 sectors
第四步:创建GPT分区格式
[root@rhel8 ~]# parted /dev/nvme0n3 
GNU Parted 3.2
Using /dev/nvme0n3
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)   help  #查看使用方法
(parted) mktable gpt     #指定gpt的格式
(parted) mkpart            #创建分区
Partition name?  []? gpt01   #指定分区名
File system type?  [ext2]?      #是否指定ext2文件格式-->选择默认
Start? 0                       #从0开始                                                          
End? 2G                        #分配2G的空间                                                   
Warning: The resulting partition is not properly aligned for best performance:
34s % 2048s != 0s
Ignore/Cancel? ignore                #忽略                                               
(parted) print                    #查看一下                                              
Model: NVMe Device (nvme)
Disk /dev/nvme0n3: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name   Flags
 1      17.4kB  2000MB  2000MB  ext2         gpt01
(parted) quit                    #退出

#查看一下
[root@rhel8 ~]# ls /dev/nvme0n3p1
/dev/nvme0n3p1
第五步:格式化分区-->挂载使用
[root@rhel8 ~]# mkfs.xfs /dev/nvme0n3p1

[root@rhel8 ~]# mount /dev/nvme0n3p1 /gpt01/
[root@rhel8 ~]# df -h 
################
/dev/nvme0n3p1         1.9G   46M  1.9G   3% /gpt01

实验:创建LVM

第一步:创建好分区并且给与10G的大小
[root@rhel8 ~]# fdisk /dev/nvme0n2
Command (m for help): n
Select (default p): p
Partition number (2-4, default 2): 
First sector (4196352-41943039, default 4196352): 
Last sector, +sectors or +size{K,M,G,T,P} (4196352-41943039, default 41943039): +10G
Command (m for help): w
第二步: 创建PV/VG/LV
#创建pv
[root@rhel8 ~]# pvcreate /dev/nvme0n2p2 
  Physical volume "/dev/nvme0n2p2" successfully created.
 [root@rhel8 ~]# pvdisplay 
 
#创建vg,
[root@rhel8 ~]# vgcreate vg0  /dev/nvme0n2p2 
  Volume group "vg0" successfully created
[root@rhel8 ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree  
  rhel   1   2   0 wz--n- <19.00g      0 
  vg0    1   0   0 wz--n- <10.00g <10.00g
   
#创建lv逻辑卷
[root@rhel8 ~]# lvcreate -L 2G  lv0 /dev/nvme0n
/dev/nvme0n1p2  /dev/nvme0n2p2  
[root@rhel8 ~]# lvcreate -L 2G -n  lv0 vg0
  Logical volume "lv0" created.
[root@rhel8 ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- <17.00g                                                    
  swap rhel -wi-ao----   2.00g                                                    
  lv0  vg0  -wi-a-----   2.00g
第三步:创建文件系统并且挂载
[root@rhel8 ~]# mkfs.xfs /dev/mapper/vg0-lv0 
meta-data=/dev/mapper/vg0-lv0    isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@rhel8 ~]# mkdir /lv0
[root@rhel8 ~]# mount /dev/mapper/vg0-lv0 /lv0/
[root@rhel8 ~]# df -h  | grep lv0
/dev/mapper/vg0-lv0    2.0G   47M  2.0G   3% /lv0

实验:动态扩展LVM

第一步:查看原有的lvm大小
[root@rhel8 ~]# df -h  | grep lv0
/dev/mapper/vg0-lv0    2.0G   47M  2.0G   3% /lv0

[root@rhel8 ~]# vgs 
  VG   #PV #LV #SN Attr   VSize   VFree 
  rhel   1   2   0 wz--n- <19.00g     0 
  vg0    1   1   0 wz--n- <10.00g <8.00g

[root@rhel8 ~]# pvs
  PV             VG   Fmt  Attr PSize   PFree 
  /dev/nvme0n1p2 rhel lvm2 a--  <19.00g     0 
  /dev/nvme0n2p2 vg0  lvm2 a--  <10.00g <8.00g
第二步:卸载挂载的设备
[root@rhel8 ~]# umount /lv0
[root@rhel8 ~]# df -h  | grep lv0
第三步: 动态扩容到4G
[root@rhel8 ~]# lvextend -L 4G /dev/vg0/lv0 
  Size of logical volume vg0/lv0 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume vg0/lv0 successfully resized.
[root@rhel8 ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- <17.00g                                                    
  swap rhel -wi-ao----   2.00g                                                    
  lv0  vg0  -wi-a-----   4.00g 
第四步:先让创建的lvm挂载
[root@rhel8 ~]# mount /dev/mapper/vg0-lv0 /lv0/
[root@rhel8 ~]# df -h | grep /lv0
/dev/mapper/vg0-lv0    2.0G   47M  2.0G   3% /lv0
第五步:重新调整大小
[root@rhel8 ~]# xfs_growfs /lv0/
meta-data=/dev/mapper/vg0-lv0    isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 524288 to 1048576
[root@rhel8 ~]# df -h | grep /lv0
/dev/mapper/vg0-lv0    4.0G   62M  4.0G   2% /lv0
注意: resize2fs命令是用于ext4系统文件的 然后更改大小的时候是先让内核识别扩展后的大小,再挂载 [root@rhel8 ~]# resize2fs /dev/nvme0n3p1     xfs_growfs 命令是用于xfs文件系统的 xfs_growfs是直接跟挂载的目录, 所以需要实现挂载了扩展的lvm后再执行扩容命令   lvcreate命令 -L:指定的是实际的大小 -l:指定的是多少个PE -n:指定逻辑卷名  

LVM分别对应的命令

[root@rhel8 ~]# pv
pvchange   pvcreate   pvmove     pvresize   pvscan     
pvck       pvdisplay  pvremove   pvs  

[root@rhel8 ~]# vg
vgcfgbackup    vgconvert      vgextend       vgmknodes      vgs
vgcfgrestore   vgcreate       vgimport       vgreduce       vgscan
vgchange       vgdisplay      vgimportclone  vgremove       vgsplit
vgck           vgexport       vgmerge        vgrename 

[root@rhel8 ~]# lv
lvchange     lvdisplay    lvmconfig    lvmpolld     lvreduce     lvresize
lvconvert    lvextend     lvmdiskscan  lvmsadc      lvremove     lvs
lvcreate     lvm          lvmdump      lvmsar       lvrename     lvscan

卸载LVM顺序

第一步:取消分区和目录的挂载
[root@rhel8 ~]# umount /lv0
第二步:删除lv逻辑卷  
[root@rhel8 ~]# lvremove /dev/vg0/lv0 
Do you really want to remove active logical volume vg0/lv0? [y/n]: y
  Logical volume "lv0" successfully removed
第三步:删除vg卷组
[root@rhel8 ~]# vgremove vg0 
  Volume group "vg0" successfully removed
第四步:删除pv物理卷
[root@rhel8 ~]# pvremove /dev/nvme0n2p2 
  Labels on physical volume "/dev/nvme0n2p2" successfully wiped.

 



                   

 

上一篇:学习Linux第二天安装虚拟机和RHEL8系统


下一篇:SQL SERVER 临时数据库 tempdb 迁移或增加文件