第一章、定时任务调度
一、crond任务调度
crontab 进行 定时任务的设置
1、概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
- 系统工作:有些重要的工作必须周而复始地进行。如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库进行备份
2、基本语法
crontab [选项]
3、常用选项
-e:edit,编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
重启任务调度:service crond restart
二、crontab时间表达式
1、格式
标准的 crontab 时间表达式由五个时间字段组成,格式如下:
分钟:一个小时当中的第几分钟
小时:一天当中的第几小时
日期:一个月当中的第几天
月份:一年当中的第几月
星期:一周当中的星期几
字段与字段之间使用空格分开
2、字段取值范围
每个时间字段都有对应的取值范围,用来指定任务的执行时间。具体的取值范围如下:
- 分钟(Minutes): 0 到 59。
- 小时(Hours): 0 到 23。
- 日期(Day of month): 1 到 31。
- 月份(Month): 1 到 12。
- 星期(Day of week): 0 到 7(0 和 7 都代表星期日,1 代表星期一,以此类推)。
例如,要在每天的 0 点 30 分执行一个任务,可以使用以下的 crontab 时间表达式:
30 0 * * * 命令
这个时间表达式表示在每天的 0 点 30 分执行任务。这种时间表达式就是标准的 crontab 时间格式,通过合理设置这五个字段的取值,可以精确指定任务的执行时间。
3、特殊字符
在这五个字段中,你可以使用具体的数字表示某个时间点,也可以使用特殊字符表示不同的含义:
*
:表示匹配任何值,代表任何时间。例如,- 在分钟字段中使用
*
表示每一分钟都执行。 - 在小时字段中使用 * 表示每小时都执行
- 在日期字段中使用 * 表示每天都执行
- 在月份字段中使用 * 表示每月都执行
- 在星期字段中使用 * 表示每星期都执行
- 在分钟字段中使用
,
:用于指定一个值列表。代表不连续的时间,例如1,3,5
* * * * 命令:表示 1、3 和 5 分钟。- 0 8,12,16 * * * 命令:表示在每天的8点0分,12点0分,16点0分都执行一次命令
-
:用于指定一个范围,代表连续的时间范围。例如1-5 * * * *
命令:表示 1 到 5 分钟。- 0 5 * * 1-6 命令:表示在周一到周六的凌晨5点0分执行命令
*/n
:用于指定步长,代表每隔多久执行一次。例如*/15
表示每 15 分钟一次。- */10 * * * * 命令:表示每隔10分钟就执行一遍命令
当设置 crontab 时间表达式时,逗号(,
)、连字符(-
)、以及斜杠(/
)都是常用的字符,用于指定不同的时间取值范围。以下是它们的用法示例:
逗号(,
):指定多个值
# 在每天的 1 点和 13 点执行任务
0 1,13 * * * command
这个表达式表示在每天的 1 点和 13 点执行任务。
连字符(-
):指定范围
# 在每月的 5 号到 10 号的 0 点执行任务
0 0 5-10 * * command
这个表达式表示在每月的 5 号到 10 号的 0 点执行任务。
斜杠(/
):指定步长
# 每隔两个小时执行任务
0 */2 * * * command
这个表达式表示每隔两个小时执行任务,例如在 0 点、2 点、4 点等执行。
这些符号在 crontab 时间表达式中具有很强的灵活性,能够帮助你精确地指定任务执行的时间。通过合理地组合这些符号,可以实现各种不同时间间隔的任务调度。
3.1、特定四件执行任务案例
星期和日期最好不要同时出现,因为他们定义的都是天,非常容易让管理员混乱
- 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分钟执行一次命令,例如:4点10分,4点20,一直到4点50,到了5点就不算了
- 0 0 1,15 * 1 命令:每月1号和15号,每周1的0点0分都会执行命令
4、快速入门
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab -e 命令
接着输入任务到调度文件
如:* * * * * ls -l /etc/ > /tmp/to.txt 意思说每小时的每分钟执行一次该命令
三、crond任务调度案例
1、每隔1分钟,将当前的日期信息追加到/tmp/mydate文件中
crontab -e
* * * * * date >> /tmp/mydate
2、每隔1分钟,将当前的日期和日历都追加到/home/mycal文件中
3、每天凌晨2点将mysql数据库testdb,备份到文件中
crontab -e
0 2 * * * mysqldump -u root -p 密码 数据库 >> /home/db.bak
四、at定时任务
1、概述
at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef | grep atd
2、基本语法
at [选项] [时间]
Ctrl + D 结束at命令的输入 输入两次
3、常用选项
-m:当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
4、常用时间
at指定时间的方法:
- 接受在当天的hh: mm(小时: 分钟)式的时间指定。加入该时间已经过去,那么就放在第二天执行。例如:04:00
- 使用midnight(深夜),noon(中午),teatime(饮茶时间,一般下午4点)等比较模糊的词语来指定时间。
- 采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12PM
- 指定命令执行的具体日期,指定格式为month day (月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面,例如:04:00 2023-12-19
- 使用相对计时法。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟),days(天),weeks(星期)。count是时间的数量,几天,几小时。例如:now + 5 minutes
- 直接使用today(今天),tomorrow(明天)来指定完成命令的时间
at
命令中指定时间的格式比较灵活,它支持多种时间表示方式,允许使用相对时间或绝对时间来指定任务执行的时间点。这些时间格式包括:
- 绝对时间格式:
- HH:MM - 指定具体的小时和分钟(24小时制)。
- HH:MM YYYY-MM-DD - 指定具体的小时、分钟以及日期。
- HH:MMAM/PM - 支持AM/PM标记的时间格式,例如:
10:00PM
。
- 相对时间格式:
- now + x minutes/hours/days/weeks - 表示从当前时间开始延迟 x 分钟、小时、天或周执行。
- noon/midnight + x minutes/hours - 以正午或午夜为基准,延迟指定的分钟数或小时数。
- teatime - 在系统中定义的"茶点"时间执行,通常是下午4点。
示例:
at now + 1 hour
: 1小时后执行任务。at 10:00 PM tomorrow
: 明天晚上10点执行任务。at noon + 2 days
: 两天后的中午执行任务。at teatime
: 在系统定义的茶点时间执行任务。
总体来说,at
命令允许使用直观和灵活的时间格式,使用户能够方便地安排任务的执行时间。
5、案例
案例一:2天后的下午5点执行 /bin/ls /home
案例二:atq命令来查看系统中没有执行的工作任务
案例三:明天17点钟,输出时间到指定文件内,比如:/root/date100.log
案例四:2分钟后,输出时间到指定文件内,比如:/root/date200.log
案例五:删除已经设置的任务,atrm 编号
第三章、Linux磁盘分区、挂载
一、概述
1、磁盘分区
Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
在 Linux 中,磁盘分区和挂载是管理存储设备的重要概念。下面是关于这两个概念的详细解释:
磁盘分区(Disk Partitioning):
- 定义: 磁盘分区是将物理硬盘划分为不同的逻辑区域,每个区域被称为一个分区。每个分区可以独立地格式化、挂载和管理文件系统。
- 作用: 分区可以将硬盘划分为不同的逻辑单元,有助于组织数据、提高性能、实现多重引导、隔离系统和用户数据等。
- 分区类型:
- 主分区(Primary Partition): 最多只能有四个主分区。其中一个可以是扩展分区。
- 扩展分区(Extended Partition): 扩展分区可以进一步划分为逻辑分区,扩展分区本身不能用于存储数据。
- 逻辑分区(Logical Partition): 位于扩展分区内部的逻辑单元。
- 分区工具: 在 Linux 中,常用的磁盘分区工具包括
fdisk
、parted
、gdisk
等。
2、磁盘挂载
Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得
挂载(Mounting):
- 定义: 挂载是将文件系统连接到文件系统目录树的过程,使得文件系统中的文件和目录可以在特定的挂载点(mount point)下访问。
- 作用: 通过挂载,可以将不同的存储设备或分区整合到文件系统中,使得用户能够方便地访问和操作存储设备中的数据。
- 挂载点: 挂载点是文件系统树中的目录,用于将设备的内容映射到文件系统。常见的挂载点包括
/
,/home
,/mnt
,/media
等。 - 挂载命令: 在 Linux 中,使用
mount
命令来手动挂载文件系统。可以通过/etc/fstab
文件设置系统启动时自动挂载的文件系统。
例如:
# 挂载 /dev/sdb1 到 /mnt/mydisk 目录
sudo mount /dev/sdb1 /mnt/mydisk
总体而言,磁盘分区用于划分硬盘空间,而挂载则将这些分区或外部设备的内容连接到文件系统中的特定位置,使得数据能够被访问和操作。这两个概念在 Linux 系统中对于管理和使用存储设备非常重要。
二、磁盘分类
Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
1、IDE硬盘
对于IDE硬盘,驱动器标识符为“hdx~”
- hd:表示分区所在设备的类型,这里是指IDE硬盘
- x:为盘号
- a:基本盘
- b:基本从属盘
- c:辅助主盘
- d:辅助从属盘
- ~:代表分区
- 前4个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。
hda3:表示为第一个IDE硬盘上的第三个主分区或扩展分区
hdb2:表示为第二个IDE硬盘上的第二个主分区或扩展分区
2、SCSI硬盘
SCSI硬盘标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型,其余和IDE硬盘的表示方法一样。
3、查看所有设备挂载情况
命令:lsblk 或者 lsblk -f
第二章、常用软件安装
一、java
注意:配置java环境变量时:为 .: 表示当前路径下
二、python
解压安装包
tar -zxvf Python-3.6.13.tgz
进入解压后的目录
cd Python-3.6.13
配置源码
./configure --prefix=/usr/python3.6.13
编译并安装
make && make install
查看python安装目录
cd /usr/python3.6.13/
ls -l
建立新的python软链接
rm -rf /usr/bin/python
ln -s /usr/python3.6.13/bin/python3.6 /usr/bin/python
修改yum依赖
vim /usr/libexec/urlgrabber-ext-down
vim /usr/bin/yum