文章目录
第一章:例行性工作(任务计划)
RHCSA复习:
命令回顾:
pwd ----#打印当前路径目录
/root
touch命令:
touch a b c ---创建a b c 三个文件在当前路径下
cd命令:
cd . --------匹配当前目录
cd .. -------匹配上一级目录
ctrl+c :终止当前命令
ctrl+l 或 clear :清屏
文件类型:
l:链接文件;
c:字符设备文件;
p:进程文件
s:可作为套接字文件
ls / -----列出/目录下的文件(只列出文件名)
ls -l / ------以长格式列出/目录下的文件(文件名及其他详细内容)
ll / ----- ls -l / 的简介格式(显示根目录下所有的文件及属性)
ll -d / #显示/目录文件及属性
在进入vim模式对文件进行编写或修改时,可以通过i/I,s/S,o/O,a/A任意一个字符进入插入模式,在插入模式中,通过键盘左上角的Esc键退出插入模式进入命令模式。
dd:删除光标所在行
yy:复制光标所在行
p:粘贴复制的行内容
NG:跳转到文件第N行(1G:跳转到文件第一行)
mkdir命令:
mkdir :创建目录文件(格式:mkdir 目录文件路径)
创建多级目录:mkdir 多级目录文件路径 -pv
mkdir /{1,2,3} ----创建目录文件
mv移动命令:
mv a /1 -----将a文件移动到根目录下的1文件中
cp复制命令:
cp b /2 ------将b文件复制到根目录下的2文件中
rm删除命令:
rm -r /3 ------删除根目录下的3文件(需要确认是否删除)
rm -rf /2 ------强制删除,删除根目录下的2文件
rm -rf / ------删除根目录下的所有文件,慎重选择删除
find查找命令:
find / -name 123 : 查找根目录下含有文件123的所有文件路径
用户命令的增删改查:
useradd zhangsan -----添加zhangsan用户
usermod -l xiaosan zhangsan -----修改zhangsan的用户为xiaosan
userdel -r xiaosan -----删除xiaosan用户及xiaosan用户下的所有内容(-r是递归)
id 用户名 -----查找用户是否存在
添加用户时,只能在管理员模式下进行,且只能一个用户一个用户的添加,不能同时添加多个用户。
修改文件权限:
[root@localhost ~]# touch a
[root@localhost ~]# ll a
-rw-r--r--. 1 root root 0 Oct 14 14:51 a
[root@localhost ~]# chmod 755 a
[root@localhost ~]# ll a
-rwxr-xr-x. 1 root root 0 Oct 14 14:51 a
[root@localhost ~]# chmod u=r a
[root@localhost ~]# ll a
-r--r-xr-x. 1 root root 0 Oct 14 14:51 a
[root@localhost ~]# chmod ugo=rw a
[root@localhost ~]# ll a
-rw-rw-rw-. 1 root root 0 Oct 14 14:51 a
[root@localhost ~]# chmod a=rw a
[root@localhost ~]# ll a
-rw-rw-rw-. 1 root root 0 Oct 14 14:51 a
安装软件–直接基于rpm包进行安装
1,安装包的安装方式:本地源(或网络源)
/dev/cdrom -----> /dev/sr0
#mount /dev/sr0 /mnt ------挂载

2,dnf-3 <---- dnf <---- yum /etcyum.repos.d/*.repo

# dnf install lrzsz -y
一,单一执行的例行性工作
单一执行的例行性工作:仅处理执行一次就结束了
1,at配置文件
-
/etc/at.allow,写在该文件的人可以使用at命令
-
/etc/at.deny,黑名单
-
两个文件如果都不存在,只有root能使用
#at工作调度对应的系统服务
[root@localhost ~]# ps -ef | grep at
[root@localhost ~]# systemctl status atd
#at的工作文件存放目录
[root@localhost ~]# ll /var/spool/at
#at工作的日志文件
[root@localhost ~]# ll /var/log/cron
at命令执行过程分析
- 第一步:寻找/etc/at.allow (白名单)是否存在,写在该文件中用户才可执行at命令
- 第二步:若/etc/at.allow不存在,则寻找/etc/at.deny(黑名单)文件,写在该文件中的用户不能使用at命令
- 第三步:若两个文件都不存在则只有root用户可以使用at命令
- 注意:若拒绝某用户使用at命令则可以将用户名写入到/etc/at.deny中
2,at命令详解
命令格式:at [参数] [时间]

参数:
-V 显示版本
-m 当任务完成之后,即使没有标准输出,将给用户发送邮件
-l atq的别名,可列出目前系统上面的所有该用户的at调度
-d atrm的别名,可以取消一个在at调度中的工作
-v 使用较明显的时间格式,列出at调度中的任务列表
-c 可以列出后面接的该项工作的实际命令内容(脚本)
-f 从文件中读取作业
时间格式:
HH:MM 在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明
天执行
HH:MM YYYY-MM-DD 强制规定在某年某月的某一天的特殊时刻进行该工作 MMDDYY
now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks

#定义三分钟之后显示hello
[root@server ~]# at now + 3 minutes
wall广播命令:

[root@localhost ~]# vim job1 --------创建一个任务
touch at_file
mkdir /test
[root@localhost ~]# at 12:12 2024-10-15 -f job1
warning: commands will be executed using /bin/sh
job 3 at Tue Oct 15 12:12:00 2024
注意:由于at执行程序只有一次,所以at的时间是24小时制
[root@localhost ~]# atq
3 Tue Oct 15 12:12:00 2024 a root
[root@localhost ~]# at -c 3 ------查看任务3的内容
.........
${SHELL:-/bin/sh} << 'marcinDELIMITER72794e31'
touch at_file
mkdir /test

二,循环执行的例行性工作crond
crontabs程序名 ---> crond程序进程 ---> crontab命令用法
crontab在编辑工作时类似于vim命令模式。
[root@localhost ~]# rpm -qa | grep crontab
crontabs-1.11-27.20190603git.el9_0.noarch
[root@localhost ~]# crontab -e -u zhou -------使用用户zhou进行例行性工作编辑
- crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的,若需要安装则执行如下命令:
[root@server ~]# yum install crontabs # 安装,注意包名
[root@server ~]# systemctl status crond # 查看状态
-
crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务,crontab 命令需要 crond 服务支持
-
linux 任务调度的工作主要分为以下两类:
- 系统执行的工作**:**系统周期性所要执行的工作,如备份系统数据、清理缓存
- 个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
1, crontab的工作过程
- 当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样,如果有此文件,/etc/cron.deny 文件会被忽略,因为 /etc/cron.allow 文件的优先级更高
- 当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令
- 两个文件如果都不存在,只有root能使用
- crontab 执行的每一项工作都会被 记录到 /var/log/cron 这个日志文件中
- 当用户使用 crontab 新建工作之后,该项工作就会被记录到 /var/spool/cron/目录里面
#crontab工作调度对应的系统服务
[root@localhost ~]# systemctl status crond
#crontab工作的日志文件
[root@localhost ~]# ll /var/log/cron
#用户定义计划任务的文件所在目录
[root@localhost ~]# ll /var/spool/cron/
2, crontab命令详解
crontab [-u user] [-l| -r | -e]
执行crontab 命令就是在修改
/var/spool/cron中的定时任务文件。
循环执行的例行性工作:每隔一定的周期就需要执行一次
[root@localhost ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab (清空)
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-V print version and exit
-x <mask> enable debugging
crontab计划任务的时间格式:
| 分 | 时 | 日 | 月 | 周 |
|---|---|---|---|---|
| 0-59 | 0-23 | 1-31 | 1-12 | 0-7 0/7 |
date:月日时分年.秒
crontab计划任务的时间格式中的特殊符号:
| 特殊字符 | 含义 |
|---|---|
| * | 代表任何时刻 |
| , | 代表分隔时段 |
| - 0-59 | 代表一段时间范围 |
| /数字 | 指定时间的间隔频率,例如每 3 分钟进行一次,*/3 |
注:%在crontab里面有特殊含义,如果有命令里面需要使用%,需要使用\转义。
#每天早上9点整说good morning
[root@server ~]# crontab -e
0 9 * * * wall "good morning"
注:wall命令用于向系统当前所有打开的终端上输出信息。
通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
定时邮件发送任务:
-
设置邮件发送告警功能,每1分钟发送一封邮件
-
安装邮件服务
[root@server ~]# yum install mailx -y
- 配置邮件服务
[root@server ~]# vim /etc/mail.rc
# 最后一行添加以下内容:
set from=lxx1065372838@163.com
set smtp=smtp.163.com
set smtp-auth-user=lxx1065372838@163.com
set smtp-auth-password=HUamwakqNSvYwQDe
set smtp-auth=login
# 注意:该文件输入完毕有的系统需要强制保存退出,输入wq!
- 测试邮件服务
[root@server ~]# echo 123 | mail -s "123" lxx1065372838@163.com
- 设置定时任务
[root@server ~]# crontab -e
MAILTO=lxx1065372838@163.com
* * * * * echo "警告" | mail -v -s "test " lxx1065372838@163.com
书写定时任务的注意事项
- 6 个字段都不能为空,如果不确定则使用*表示任意时间
- crontab命令任务的最小时间单位为分钟,最大有效时间为月,如:2024年某时执行、3点30分30秒这样的时间日期无法被识别
- 定义时间时,日期和星期最好不要一起出现,由于都是以天为单位,非常让管理员混淆
- 在定时任务中不能,不管是写命令还是在脚本中写命令,最好都用绝对路径,相对路径有时会报错
3 ,系统的计划任务(对系统所有用户都生效的任务文件)
[root@localhost ~]# cat /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,fri,sat
# | | | | |
# * * * * * user-name command to be executed
当需要同一时间执行多个脚本时,可以将这多个脚本放在一个目录下,然后使用run-parts来执行。
run-parts:该命令可将后面接的“目录”内的所有文件找出来执行。
可唤醒停机期间的工作任务
anacron 可以处理关机状态时未执行的计划任务,anacron不能指定何时执行某项任务,而是以天为单位或是在开机后立刻进入anacron的操作(/etc/anacrontab)。它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止了
作业1
1. 每分钟执行命令
2. 每小时执行
3. 每天凌晨3点半和12点半执行脚本
4. 每隔6小时,相当于6,12,18,24点半执行脚本
5. 30代表半点,8-18/2表示早上8点到下午18点之间每隔2小时执行脚本
6. 每天晚上9点30重启nginx
7. 每月1和10号凌晨4点45执行脚本
8. 每周六和周日凌晨1点10分执行命令
9. 每天18点到23点之间,且每隔30分钟执行一次
10. 每隔一小时执行一次
11. 在4月份的周一到周三的上午11点执行脚本
12. 每天早上7点到上午11点且每2小时执行一次
13. 每天6点执行脚本
14. 每周六凌晨4点执行
15. 每周六凌晨4点05执行
16. 每天8:40执行
17. 在每天10:31且每隔2小时执行一次
18. 每周一到周五2:00执行
19. 每周一到周五8:00和9:00执行
20. 每天10:00,16:00执行
答案:
1. */1 * * * * cmd
2. 0 * * * * cmd
3. 30 3,12 * * * cmd
4. 30 6,12,18,24 * * * cmd
5. 30 8-18/2 * * * cmd
6. 30 21 * * * /usr/bin/systemctl restart nginx
7. 45 4 1,10 * * cmd
8. 10 1 * * 6,0 cmd
9. 0,30 18-23 * * * cmd
10. 0 */1 * * * cmd
11. 0 11 * 4 1-3 cmd
12. 0 7-11/2 * * * cmd
13. 0 6 * * * cmd
14. 0 4 * * 6 cmd
15. 5 4 * * 6 cmd
16. 40 8 * * * cmd
17. 31 10/2 * * * cmd
18. 0 2 * * 1-5 cmd
19. 0 8,9 * * 1-5 cmd
20. 0 10,16 * * * cmd
&spm=1001.2101.3001.5002&articleId=142982387&d=1&t=3&u=7d3346131dd749ed9b374289193fa291)
1312

被折叠的 条评论
为什么被折叠?



