一、计划任务
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.