diff --git "a/13\351\237\251\347\224\263\347\220\246/20240604.md" "b/13\351\237\251\347\224\263\347\220\246/20240604.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b4c35052a8ccd543e4ee1f25a9474ae61d1190ec
--- /dev/null
+++ "b/13\351\237\251\347\224\263\347\220\246/20240604.md"
@@ -0,0 +1,213 @@
+### awk命令用法
+
+```bash
+假如已有stu.txt文件,内容如下:
+姓名,数学,语文,科学,班级
+张伟,85,92,88,1班
+李娜,78.5,81,79.5,2班
+王强,95,89,94.5,3班
+赵敏,90,72.5,70,2班
+刘洋,88,94,90,1班
+陈刚,74,85,80,1班
+杨梅,91,87,89,3班
+黄磊,55.5,90,86,3班
+周红,76,78,80,2班
+王彬,90,93.5,92,1班
+大王,85,86,45.5,2班
+小王,74,56,88,3班
+```
+
+```bash
+awk [选项] '脚本' 文件
+#最简单的一个脚本,打印全文
+awk '{print}' stu.txt
+
+awk脚本由一个或多个语句块组成,每个语句块可以是以下三种之一:
+1.开始语句块:在程序开始时执行 BEGIN {print "start"}
+2.通用语句块:逐行处理文件内容 pattern {commands}
+3.结束语句块:在程序结束时执行 END {print "end"}
+```
+
+```bash
+# 头尾各加一行
+awk 'BEGIn {print "我是开头"} {print} END {print "我是结尾"}' stu.txt
+
+语句块语法:由模式和动作构成
+awk 'pattern {actions}' #即 模式 {动作}
+#模式 (pattern):可以是正则表达式,关系表达式,特定条件等。
+#动作 (action): 一组语句,描述在匹配模式的行上执行的操作
+
+awk '/王/ {print $0}' stu.txt
+#打印文件中所有包含 王 的行
+```
+
+```bash
+awk -F, 'BEGIN {print "------开始-------"}
+$2>=80 {print}
+END {print "--------结束--------"}' stu.txt
+#-F, :指定逗号作为字段分隔符,不指定默认是空格(\t)做分隔符
+#BEGIN {print "-------开始------"}: 在处理文件开始时打印"-----开始----"
+#$2>=80 {print} :对于每一行,如果第二个字段(数学成绩)大于或等于80,则打印改行
+#END{print "----结束----"}:在处理文件结束时打印"----结束----"
+输出的内容为:
+----开始-----
+姓名,数学,语文,科学
+张伟,85,92,88
+王强,95,89,94
+刘洋,88,94,90
+杨梅,91,87,89
+黄磊,82,90,86
+王彬,90,93,92
+----结束-----
+```
+
+```bash
+#### Awk 中的常用选项(限命令行)
+- `-F`:指定输入字段分隔符。例如,`-F,` 将逗号设置为字段分隔符。
+ - 默认是以空格\t等为分隔符 file split
+ - 类似于FS="分隔符" 在文件中使用
+- `-v`:赋值外部变量。例如,`-v var=value`。 min=60
+- `-f`:指定 Awk 脚本文件。例如,`-f script.awk`。
+- `-W`:控制警告和其他运行时选项。例如,`-W version` 用于显示版本信息。
+
+#### Awk 中的常用模式(pattern)
+- 匹配正则表达式
+ - `/pattern/`:匹配包含指定模式的行。例如,`/error/` 匹配所有包含“error”的行。
+ - $2 ~ /pattern/ :匹配第2列包含关键字pattern的行,
+ - $2 !~ /pattern/:匹配第2列不包含关键字pattern的行
+
+- 比较运算符
+ - 匹配第 n 行。例如,`NR == 1` 匹配第一行。
+ - `==`(等于),例$2 == "张三" 匹配第二列等于张三的行
+ - `!=`(不等于)
+ - `<`(小于)
+ - `<=`(小于等于)
+ - `>`(大于)
+ - `>=`(大于等于)
+
+- 逻辑运算符
+ - `NR >= m && NR <= n`:匹配第 m 到第 n 行。例如,`NR >= 2 && NR <= 4` 匹配第2到第4行。
+ - `&&`:逻辑与(AND)
+ - `||`:逻辑或(OR)
+ - `!`:逻辑非(NOT)
+
+- 三元运算符
+ - 条件运算符 `? :`
+ - grade = ($2 >= 60 ? "及格" : "不及格")
+
+ #### Awk 中的常用动作(action)
+- `print`:打印指定内容。例如,`print $1` 打印第一字段。
+- `printf`:格式化输出。例如,`printf "%s\n", $1` 以格式化方式打印第一字段。
+
+- - 常用的格式说明符
+ - `%s`:字符串 String
+ - `%d`:有符号十进制整数
+ - `%f`:浮点数 %.2f
+
+ - 带有宽度和对齐的写法:
+ - `%5s`:字段宽度为 5 的字符串,右对齐
+ - `%-5s`:字段宽度为 5 的字符串,左对齐
+ - `%10d`:字段宽度为 10 的有符号十进制整数,右对齐
+ - `%-10d`:字段宽度为 10 的有符号十进制整数,左对齐
+ - `%8.2f`:字段总宽度为 8,其中小数点后有 2 位的浮点数
+
+- `{}`:包含一个或多个动作的块。例如,`{ print $1; print $2 }`。
+ - 用;号分隔多个动作语句
+ - 如果每个语句在单独的行上,;号可以省略
+
+
+#### Awk 中的特殊变量
+- `NR`:表示记录的数量(当前行号)。Numbers of Rows
+- `NF`:表示当前行的字段数量。`$NF`表示什么?最后一列 Number of flied
+- `$0`:包含当前行的文本内容,即一整行内容。有时候也省略
+- `$1`、`$2`:表示当前行的第1个、第2个字段的内容,以次类推。
+- `FS`:输入时的域分割符。效果同-F选项 File split
+- `OFS`:输出时的域分割符。out File split
+
+```
+
+```bash
+#计算总成绩
+awk 'BEGIN {FS=","} NR>1 {print $1, $2 + $3 + $4 }' stu.txt
+#BEGIN {FS=","}:设置字段分隔符FS为逗号
+#NR>1 :跳过标题行,只处理从第二行开始的数据
+#{print $1,$2+$3+$4}:打印每一行的第一个字段和第二到第五个字段的和
+
+#查找姓名为王强的学生信息
+awk 'BEGIN { FS="," } $1 == "王强" { print }' stu.txt
+# 输出 王强,95,89,94,85
+
+#打印行号和学生姓名:
+awk -F ',' '{ print NR, $1 }' stu.txt
+
+#查找特定学生的成绩:
+awk -F ',' '$1 == "杨梅" { print "姓名:" $1, "数学:" $2, "语文:" $3, "科学:" $4 }' stu.txt
+
+#使用正则表达式查找学生:
+awk -F ',' '$1 ~ /王强/ { print $1, $2 + $3 + $4 }' stu.txt
+#使用 ~ 运算符明确表示匹配第一个字段 $1,即检查第一字段是否包含 "王强"。
+#$1 == "王强":匹配完全等于 "王强" 的行。
+#$1 ~ /王强/:匹配包含 "王强" 的所有行
+
+#结合模式使用
+awk -F, '$2 >= 85 || $3 >= 90 { print $0 }' stu.txt # 数字85以上,或数学90以上
+awk -F, '$2<60 || $3<60 || $4<60 {print} ' stu.txt # 有任意一科挂科的
+
+
+#计算总成绩和平均成绩:
+awk -F, '{ total += $2 + $3 + $4 }
+END {
+ print NR-1, "个学生";
+ print "总分 is", total;
+ print "平均分 is", total/(NR-1)
+}' stu.txt
+
+# 利用数组lines[]存放每一行的内容,再倒序打印每一行
+awk '{ lines[NR] = $0 } END { for (i = NR; i > 0; i--) print lines[i] }' stu.txt
+
+# 在所有不及格的分数后添加不及格三个字
+awk -v min=60 'BEGIN { FS=","; OFS="\t\t" }
+{
+ math=$2;
+ chinese=$3;
+ science=$4;
+ if (math < min) math = math " 不及格";
+ if (chinese < min) chinese = chinese " 不及格";
+ if (science < min) science = science " 不及格";
+ print $1, math, chinese, science
+ }' stu.txt
+
+
+# 按班级输出总分
+awk -F, 'NR>1 { scores[$5] += $2+$3+$4 } END { for (name in scores) print name, scores[name] }' stu.txt
+
+# 打印每个班级中语文最高分
+awk -F, 'NR>1 { if (scores[$5] < $2) scores[$5] = $2 } END { for (name in scores) print name, scores[name] }' stu.txt
+
+# 打印每个班语文最高分姓名和分数
+awk -F, '
+NR == 1 { next } # Skip header line
+{
+ class = $5
+ chinese_score = $2
+ if (chinese_score > max_score[class]) {
+ max_score[class] = chinese_score
+ max_name[class] = $1
+ }
+}
+END {
+ for (class in max_score) {
+ print class, max_name[class], max_score[class]
+ }
+}
+' stu.txt
+
+#删除空行:
+# NF代表有列的行,即排除了空行
+awk 'NF' stu.txt
+
+#查找和替换文本:
+#所有的"1班"替换为"一班"
+awk -F, ' { gsub(/1班/, "一班"); print }' stu.txt
+```
+
diff --git "a/13\351\237\251\347\224\263\347\220\246/20240608.md" "b/13\351\237\251\347\224\263\347\220\246/20240608.md"
new file mode 100644
index 0000000000000000000000000000000000000000..394a10b6b27b4732894098f9c1dcf6984f378604
--- /dev/null
+++ "b/13\351\237\251\347\224\263\347\220\246/20240608.md"
@@ -0,0 +1,94 @@
+```bash
+ 文件内容编辑-vim
+1.光标移动
+ 单位级
+ h向左移动一个单位
+ j向下移动一个单位
+ k向上移动一个单位
+ l向右移动一个单位
+ 单词级
+ w向右移动到下一单词开头
+ e向右移动到下一单词结尾
+ b向左移动到下一单词开头
+ 块级
+ gg移动光标到文档第一行
+ G移动光标到文档最后一行
+ 0移动光标所在行的第一列
+ ^移动光标到所在行的最后一列
+ $ 移动光标到所在行的最后一列
+ H 移动光标到屏幕顶端
+ M 移动光标到屏幕中间
+ L 移动光标到屏幕底部
+ gg或者:移动光标到第n行
+ k或者:移动光标到向上n行
+ j或者:+移动光标到向下n行
+2.Visual模式
+ 字符模式,在命令模式中按v键进入
+ 行模式,在命令模式中按V键进入
+ 块模式,在命令模式中按Ctrl+v键进入
+3.vim内打开文件
+ :e<文件名称> 打开名为filename的文件,若文件不存在则创建该文件
+ :Ex在Vim中打开目录树,光标选中后回车打开对应文件(提示:-进入上级目录)
+4.内容查找
+ 文档内查找
+ *向后查找当前光标所在单词
+ # 向前查找当前光标所在单词
+ 向后查找指定字符串
+ ?向前查找指定字符串
+ n继续查找下一个
+ N继续查找上一个
+ 行内查找
+ f当前行内向行尾查找定位X字符
+ t当前行内向行尾查找定位X字符前一字符
+ F 当前行内向行首查找定位X字符
+ T 当前行内向行首查找定位X字符后一字符
+ ; 向当前方向查找下一个字符
+ , 向当前反方向查找下一个字符
+ 匹配查找%符号在其中一个上时
+ (和)
+ [和]
+ {和}
+5.文档修改与保存
+ 插入
+ i当前字符前插入
+ I当前行首插入
+ a当前字符后插入
+ A当前行尾插入
+ o在下一行插入
+ O在上一行插入
+ 删除
+ x 删除当前字符,相当于 insert 模式下的 Delete
+ X 删除前一个字符,相当于 insert 模式下的 Backspace
+ d 删除指定内容并保存到 Vim 剪贴板
+ dd 删除当前行,并将删除的内容保存到 Vim 剪贴板
+ cc 删除当前行并保存到 Vim 剪贴板,同时进入 INSERT 模式
+ c 删除指定内容并保存到 Vim 剪贴板,同时进入 INSERT 模式
+ 复制
+ y 复制指定字符串到粘贴板
+ yy 复制整行到粘贴板
+ 粘贴
+ p在当前位置后粘贴
+ P在当前位置前粘贴
+ 合并
+ J合并当前行和下一行
+ 替换
+ r将当前字符替换为X
+ gu 将指定的文本转换为小写
+ gU 将指定的文本转换为大写
+ :%s/// 查找 search 内容并替换为 replace 内容(常用)
+ 缩进
+ >>向右缩进当前行
+ <<向左缩进当前行
+ 撤销与重做
+ u撤销
+ Ctrl-r重做
+ .重复上一个动作,3.重复上次动作3次
+ 保存修改
+ :w 保存当前文件
+ :wa 保存全部文件
+ :wq or ZZ 保存并退出
+ :q! or ZQ 强制退出,不保存
+ :saveas 文件另存为
+ :w 文件另存一份名为 的副本并继续编辑原文件
+```
+
diff --git "a/13\351\237\251\347\224\263\347\220\246/20240611.md" "b/13\351\237\251\347\224\263\347\220\246/20240611.md"
new file mode 100644
index 0000000000000000000000000000000000000000..cd1bf832d6731dff7135971f8fae8fcae6904505
--- /dev/null
+++ "b/13\351\237\251\347\224\263\347\220\246/20240611.md"
@@ -0,0 +1,81 @@
+```bash
+1.设置国内软件源镜像:/etc//apt/sources.list
+2.更新软件包列表:apt update
+3.更新系统:apt upgrade -y
+4.安装vim:apt install vim -y
+5.编辑网卡配置,设置静态IP:
+vim /etc/network/interfaces
+
+重新启动网络服务:
+sudo systemctl restart networking
+常用命令;
+
+1.time(用于测量命令的执行时间)
+- real:总的时间(墙上时钟时间)。
+- user:用户态 CPU 时间。
+- sys:内核态 CPU 时间。
+
+2.date(显示或设置系统日期和时间)
+- %Y:四位数的年份。
+- %m:两位数的月份。
+- %:两位数的日期。
+
+3.timedatectl(查看和设置系统时间和日期,时区和 NTP(网络时间协议)设置)
+- NTP:网络时间协议,用于同步时间。
+- RTC:实时时钟。
+
+4.reboot(重新启动系统)
+- systemd:系统和服务管理器。
+
+5.poweroff(关闭系统电源)
+- halt:停止系统所有的 CPU 功能。
+
+6.wget(从网络上下载文件)
+- URL:统一资源定位符。
+- HTTP/HTTPS:超文本传输协议。
+
+7.curl(从网络上获取或发送数据)
+- URL:统一资源定位符。
+- GET/POST:HTTP 请求方法。
+
+8.ps(查看当前运行的进程)
+- PID:进程标识符。
+- TTY:终端类型。
+
+9.kill(向进程发送信号(通常用于终止进程))
+- SIGTERM:请求中止进程。
+- SIGKILL:强制终止进程。
+
+10.ip(显示和操作网络接口和路由)
+- address:IP 地址。
+- route:路由信息。
+
+11.ss(显示套接字统计信息。旧版是netstat)
+- TCP:传输控制协议。
+- UDP:用户数据报协议。
+
+12.uname(显示系统信息)
+- kernel:操作系统内核。
+- OS:操作系统。
+
+13.uptime(显示系统运行时间和负载)
+- load average:系统平均负载
+
+14.who(显示当前登录用户信息)
+- login:用户登录信息。
+- TTY:终端类型。
+
+15.last(显示系统上最近的登录信息)
+- wtmp:记录登录和注销事件的文件。
+
+16.ping(测试网络连通性)
+- ICMP:互联网控制消息协议。
+- echo request:回显请求。
+
+17.traceroute(显示到达网络主机的路径)
+- hop:从一个网络节点到另一个的跳转。
+- TTL:生存时间。
+
+18.history(显示命令历史记录)
+- bash history:记录用户输入的命令历史。
+```
\ No newline at end of file
diff --git "a/13\351\237\251\347\224\263\347\220\246/20240612.md" "b/13\351\237\251\347\224\263\347\220\246/20240612.md"
new file mode 100644
index 0000000000000000000000000000000000000000..f5aca278bc660e3db51995de27392e8d48a9f2a6
--- /dev/null
+++ "b/13\351\237\251\347\224\263\347\220\246/20240612.md"
@@ -0,0 +1,66 @@
+## 重定向和管道
+
+```bash
+常用的文件描述符包括:
+ 0:标准输入:键盘输入
+ 1:标准输出:直接显示在屏幕,不包含错误信息
+ 2:标准错误:只包含错误信息
+
+输出重定向
+ 1.覆盖输出重定向 >
+ 将命令的标准输出重定向到一个文件,如果文件已经存在,则覆盖它
+ ls > 1.txt
+ 这个命令将ls命令的输出保存到1.txt文件中,如果文件已存在,则会被覆盖
+
+ 2.追加输出重定向 >>
+ 将命令的标准输出追加到一个文件的末尾,如果文件不存在,则创建它
+ echo "Hello" >> 2.txt
+ 这个命令会将"Hello"追加到2.txt文件中
+
+ 3.注意:
+ 标准输出不含错误信息
+
+输入重定向
+ 1.输入重定向 <
+ 将文件的内容作为命令的输入
+ #原本的内容
+ orange
+ banana
+ apple
+ 命令: sort < 3.txt
+ #使用命令后的内容
+ apple
+ banana
+ orange
+ 将3.txt文件的内容作为‘sort’命令的输入进行排序
+
+
+错误重定向
+ 1.错误输出重定向 2>
+ 将命令的错误输出重定向到一个文件
+ reboot 2> 4.txt
+ 这个命令会将错误的信息保存到4.txt文件中
+
+ 2.错误输出追加重定向 2>>
+ 将命令的错误输出追加到一个文件
+ reboot 2>> 3.txt
+ 这个命令会将reboot的错误信息追加到3.txt文件中
+
+ 3.同时重定向标准输出和标准错误输出
+ 使用 &> 符号将标准输出和错误输出同时重定向到同一个文件
+ command &> 5.txt #正确和错误原版混搭,原封不动
+ command > 1.txt 2>&1 #正确和错误原版混搭,原封不动
+ command > 1.txt 2>> 1.txt #先正确后错误
+ command 2> 1.txt >> 1.txt #先错误后正确
+
+
+管道符 |
+ 1.将命令的输出传递给另一个命令
+ ls -l | grep "txt"
+ 这个命令会将ls -l 的输出传递给grep 'txt',只显示包含“txt”的行
+
+ 2.多命令链式操作
+ ps aux | grep "sshd" | awk '{print $2}'
+ 这个命令链会列出所以进程(ps aux),然后过滤包含"sshd"的行(grep 'sshd'),最后提取进程ID(awk '{print $2}')
+```
+
diff --git "a/13\351\237\251\347\224\263\347\220\246/20240614.md" "b/13\351\237\251\347\224\263\347\220\246/20240614.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d063a9f9ed6d3710cd7c658f4ec33fe5f8adccd9
--- /dev/null
+++ "b/13\351\237\251\347\224\263\347\220\246/20240614.md"
@@ -0,0 +1,267 @@
+1. 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令)
+
+ ```bash
+ root@hecs-235925:~# mkdir -p /guanli/zonghe &&mkdir /guanli/jishu
+ ```
+
+2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003
+
+ ```bash
+ root@hecs-235925:~# groupadd -g 2001 zonghe
+ root@hecs-235925:~# groupadd -g 2002 caiwu
+ root@hecs-235925:~# groupadd -g 2003 jishu
+ ```
+
+3. 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效
+
+ ```bash
+ root@hecs-235925:~# useradd jerry && useradd -e 2020-12-30 kylin && useradd tsengia && useradd obama
+ ```
+
+
+
+4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内
+
+ ```bash
+ root@hecs-235925:~# gpasswd -M jerry,kylin,tsengia,obama zonghe
+ ```
+
+
+
+5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin”
+
+ ```bash
+ root@hecs-235925:~# useradd handy && useradd cucci
+ root@hecs-235925:~# usermod -s /sbin/nologin cucci
+ ```
+
+
+
+6. 将handy、cucci等用户添加到jishu组内
+
+ ```bash
+ root@hecs-235925:~# gpasswd -M handy,cucci jishu
+ ```
+
+
+
+7. 将上述的所有用户均要求加入到guanli组内
+
+ ```bash
+ root@hecs-235925:~# groupadd guanli
+ root@hecs-235925:~# gpasswd -M jerry,kylin,tsengia,obama,handy,cucci guanli
+ ```
+
+
+
+8. 将zonghe组内的obama用户删除
+
+ ```bash
+ root@hecs-235925:~# gpasswd -d obama zonghe
+ Removing user obama from group zonghe
+ ```
+
+
+
+9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat”
+
+ ```bash
+ root@hecs-235925:~# passwd jerry
+ root@hecs-235925:~# passwd redhat
+ ```
+
+
+
+10. 将jerry用户锁定,并查看锁定状态
+
+ ```bash
+ root@hecs-235925:~# usermod -L jerry
+ root@hecs-235925:~# passwd -S jerry
+ jerry L 06/14/2024 0 99999 7 -1
+ ```
+
+
+
+11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个
+
+ ```bash
+ zdy18@hecs-235925:~$ sudo apt-get update
+ zdy18@hecs-235925:~$ sudo apt-get install psmisc
+ zdy18@hecs-235925:~$ who
+ zdy18@hecs-235925:~$ fuser -k/dev/pts/1
+ ```
+
+
+
+12. 查看cucci用户,属于那些组,并查看其详细信息
+
+ ```bash
+ root@hecs-235925:~# groups cucci
+ zdy18@hecs-235925:~$ sudo apt-get install finger
+ zdy18@hecs-235925:~$ finger cucci
+
+ ```
+
+
+
+13. 手工创建账号student(预留)
+
+ ```bash
+ root@hecs-235925:~# vi /etc/passwd
+ student:x:1014:1014::/home/student:/bin/bash
+ root@hecs-235925:~# vi /etc/shadow
+ student::18107:0:99999:7:::
+ root@hecs-235925:~# vi /etc/group
+ student:x:1014:
+ root@hecs-235925:~# mkdir /home/student
+ root@hecs-235925:~# cd /etc/skel/
+ root@hecs-235925:~skel# ls -a | cp .b* /home/student/
+ ```
+
+
+
+14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限
+
+ ```bash
+ root@hecs-235925:~# chown :guanli /guanli
+ root@hecs-235925:~# chown :zonghe /guanli/zonghe
+ root@hecs-235925:~# chown :jishu /guanli/jishu
+ root@hecs-235925:~# chmod -R o-rwx /guanli/
+ ```
+
+
+
+15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行
+
+ ```bash
+ root@hecs-235925:~# mkdir /ceshi
+ root@hecs-235925:~# chown .jishu /ceshi/
+ root@hecs-235925:~# chmod 770 /ceshi/
+ root@hecs-235925:~# ls -ld /ceshi
+ drwxrwx--- 2 root jishu 4096 Jun 14 19:12 /ceshi
+ ```
+
+
+
+16. 清除jerry用户密码
+
+ ```bash
+ root@hecs-235925:~# passwd -d jerry
+ passwd: password expiry information changed.
+ ```
+
+
+
+17. 锁定cucci用户密码并查看状态
+
+ ```bash
+ root@hecs-235925:~# passwd -l cucci
+ passwd: password expiry information changed.
+ root@hecs-235925:~# passwd -S cucci
+ cucci L 06/14/2024 0 99999 7 -1
+ ```
+
+
+
+18. 修改obama用户的UID为8888
+
+ ```bash
+ root@hecs-235925:~# id obama
+ uid=1021(obama) gid=1021(obama) groups=1021(obama),2004(guanli)
+ root@hecs-235925:~# usermod -u 8888 obama
+ root@hecs-235925:~# id obama
+ uid=8888(obama) gid=1021(obama) groups=1021(obama),2004(guanli)
+ ```
+
+
+
+19. 通过passwd命令修改kylin用户的最长密码使用期限为60天
+
+ ```bash
+ root@hecs-235925:~# passwd -x 60 kylin
+ passwd: password expiry information changed.
+ root@hecs-235925:~# cat /etc/shadow |grep "kylin"
+ kylin:!:19888:0:60:7::18626:
+ ```
+
+
+
+20. 通过id groups等命令查看用户handy信息
+
+ ```bash
+ root@hecs-235925:~# id handy
+ uid=1022(handy) gid=1022(handy) groups=1022(handy),2003(jishu),2004(guanli)
+root@hecs-235925:~# groups handy
+ handy : handy jishu guanli
+ ```
+
+
+
+- 用户管理
+ - 添加账户 useradd -m -s /bin/bash db2
+ - 删除账户 userdel -r db2
+ - 修改账户 usermod [选项同添加账户] db2
+ - 查看帐户 getent passwd db2
+- 用户组管理
+ - 添加用户组 groupadd stu1
+ - 删除用户组 groupdel stu1
+ - 添加用户到用户组 usermod -aG stu1 db2
+- 密码管理
+ - 设置密码 passwd
+- sudo权限管理
+ - usermod -aG sudo xxx
+ - 修改/etc/sudoers文件
+- 登录权限管理
+- 用户环境管理
+ - 用户配置文件 : .bashrc
+ - 用户环境变量: $PATH、$HOME、$SHELL
+
+## 文件与目录的权限管理
+
+- https://www.runoob.com/linux/linux-file-attr-permission.html
+
+ 
+
+- 文件类型
+
+ - -普通文件
+ - d目录
+ - l连接文件
+ - b c s p 等其它文件
+
+- 基本权限
+
+ - r 读
+ - w 写
+ - x 执行
+
+- 权限表示
+
+ - 字符表示
+ - 数字表示
+ - 4 代表 r
+ - 2 代表 w
+ - 1 代表 x
+ - 权限修改
+ - chmod 修改权限
+ - chown 修改拥有者
+ - chgrp 修改所属组
+ - 权限的继承
+ - 目录权限下文件和目录的影响
+ - umask
+ - 特权权限
+ - SUID
+ - SGID
+ - SBIT
+ - 隐藏权限
+ - i
+ - 用在文件上,无法对该文件进行任何修改
+ - 用在目录上,无法在里面创建新文件,但可以修改已有文件
+ - a
+ - 除了可追加内容外,无法进行其它修改
+ - 隐藏权限的操作
+ - 修改隐藏权限 chattr
+ - chattr +i XXX
+ - chattr -i XXX
+ - 查看隐藏权限
+ - lsattr
\ No newline at end of file
diff --git "a/13\351\237\251\347\224\263\347\220\246/20240615.md" "b/13\351\237\251\347\224\263\347\220\246/20240615.md"
new file mode 100644
index 0000000000000000000000000000000000000000..f6ad019382ee2537d6c4ec71e39681b4c2023e6a
--- /dev/null
+++ "b/13\351\237\251\347\224\263\347\220\246/20240615.md"
@@ -0,0 +1,53 @@
++ 查看当前用户的crontab文件:crontab -l
++ 编辑当前用户的crontab文件:crontab -e
++ 删除当前用户的crontab文件:crontab -r
++ 列出某个用户的crontab文件(需要有相应的权限): crontab -u username -l
++ 编辑某个用户的crontab文件(需要有相应的权限): crontab -u username -e
+
+
+
+f1 f2 f3 f4 f5 program
+
++ 其中f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。program表示要执行的程序
+
+
+
+```bash
+时间设置 含义
+* * * * * 每分钟执行一次
+0 * * * * 每小时的第0分钟执行一次
+0 0 * * * 每天的午夜(0点)执行一次
+0 0 * * 0 每周日的午夜(0点)执行一次
+0 0 1 * * 每个月的第一天午夜(0点)执行一次
+0 0 L * * 每个月的最后一天午夜(0点)执行一次
+0 0 1 1 * 每年的第一天午夜(0点)执行一次
+0 0 * * 3 每周三的午夜(0点)执行一次
+0 0 1,15 * * 每个月的第1和第15天午夜(0点)执行一次
+0 0 * * FRI 每周五的午夜(0点)执行一次
+0 0 * * 5 每周五的午夜(0点)执行一次
+0 8-17 * * * 每天的上午8点到下午5点每小时执行一次
+0 12 * * MON 每周一的中午(12点)执行一次
+0 0 15 * * 每个月的第15天午夜(0点)执行一次
+0 0 * * 3 每周三的午夜(0点)执行一次
+0 0 * * 1-5 每个工作日的午夜(0点)执行一次
+0 0 1 * FRI 每个月的第一个星期五午夜(0点)执行一次
+0 0 15 1 * 每个月的1月15日午夜(0点)执行一次
+0 0 * * 7 每周日的午夜(0点)执行一次
+0 0 * * 5 每周五的午夜(0点)执行一次
+```
+
+```bash
+实例
+每一分钟执行一次 /bin/ls:
+* * * * * /bin/ls
+
+在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:
+0 6-12/3 * 12 * /usr/bin/backup
+
+周一到周五每天下午 5:00 寄一封信给 alex@domain.name:
+0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
+
+每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha":
+20 0-23/2 * * * echo "haha"
+```
+
diff --git "a/13\351\237\251\347\224\263\347\220\246/20240618.md" "b/13\351\237\251\347\224\263\347\220\246/20240618.md"
new file mode 100644
index 0000000000000000000000000000000000000000..240e00213c88dfddc908f67af895ba6bd7f66995
--- /dev/null
+++ "b/13\351\237\251\347\224\263\347\220\246/20240618.md"
@@ -0,0 +1,68 @@
+### 环境变量
+
+``` bash
+1.环境变量的类型和作用
+ 用户级别环境变量
+ 存储在用户家目录的个人配置文件中,例如 ~/.bashrc ~/.profile
+ 用于定义用户个性化的Shell设置,如别名,路径等
+ 系统级别环境变量
+ 存储在系统范围的配置文件中,如/etc/environment /etc/profile
+ 为所有用户和系统服务提供全局的环境设置 java_home
+
+2.环境变量的加载顺序和文件
+ 系统启动加载: /etc/environment
+ 登录Shell加载顺序:
+ 首先加载/etc/profile 然后根据用户登录方式加载 ~/.profile(存在性依次加载)
+ 非登录shell:su 切换用户等 source
+ 交互式Shell加载顺序:
+ 加载~/.bashrc 或类似文件,用于设置用户个性化的Shell环境
+ 不同的shell加载不同的文件,bash才加载.bashrc, zsh加载.zshrc
+ 交互式:提供命令行窗口,非交互式:直接写在脚本里
+ 总结来说
+ 配置文件的理论加载顺序通常是 /etc/environment > /etc/profile > ~/.profile > ~/.bashrc
+
+3.设置环境变量的方法
+ 设置变量的位置:命令行(临时),脚本文件(永久)
+
+ 3.1 临时设置环境变量:临时变量(局部),临时环境变量(全部)
+ 可以使用export 命令来临时设置一个环境变量,例如:
+ export MY_VAR="value" # export 变量名=值 环境变量是全局的,整个环境有效
+ MY_VAR="value" # 少了export就是临时变量,不是全局的
+ 这种设置只在当前Shell会话中有效,关闭Shell会话后会失效
+
+ 3.2 永久设置环境变量
+ 用户级别的: 编辑用户的~/.bashrc 或~/.profile文件,并添加如下行:
+ export MY_VAR="value"
+ 保存文件后,新的设置会在下次登录时生效
+ 系统级别的:编辑/etc/environment 或 /etc/profile文件,并添加行:
+ MY_VAR="value"
+ 这里不需要使用export命令,保存文件后,变量会在系统启动时生效
+
+ 3.3环境变量的设置和使用示例
+ a.设置路径变量(PATH)
+ # 在 ~/.bashrc 中添加
+ export PATH=$PATH:/path/to/your/scripts
+ b.定义Java环境变量(JAVA_HOME)
+ # 在 ~/.bashrc 或 /etc/environment 中添加
+ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
+ export PATH=$JAVA_HOME/bin:$PATH
+ c.设置代理服务器(HTTP_PROXY、HTTPS_PROXY)
+ # 在 ~/.bashrc 中添加
+ export HTTP_PROXY=http://proxy.example.com:8080
+ export HTTPS_PROXY=http://proxy.example.com:8080
+ d.配置编辑器(EDITOR)
+ # 在 ~/.bashrc 中添加
+ export EDITOR=/usr/bin/vim
+ e.设置语言和地区(LANG、LC_系列变量)
+ # 在 ~/.bashrc 或 /etc/environment 中添加
+ export LANG=en_US.UTF-8
+ export LC_ALL=en_US.UTF-8
+ f.自定义命令别名(alias)
+ # 在 ~/.bashrc 中添加
+ alias ll='ls -alF'
+ alias grep='grep --color=auto'
+ g.设置临时环境变量
+ # 临时设置变量
+ export MY_VAR="value"
+```
+
diff --git "a/13\351\237\251\347\224\263\347\220\246/20240619.md" "b/13\351\237\251\347\224\263\347\220\246/20240619.md"
new file mode 100644
index 0000000000000000000000000000000000000000..eccfd3748d9995c0ed7f8e91987bce97d473591f
--- /dev/null
+++ "b/13\351\237\251\347\224\263\347\220\246/20240619.md"
@@ -0,0 +1,46 @@
+### Linux系统服务管理
+
++ systemctl
+ + 启动服务 : systemctl start 服务名
+ + 停止服务 : systemctl stop 服务名
+ + 重启服务 : systemctl restart 服务名
+ + 查看服务 : systemctl status 服务名
+ + 重新加载配置文件 : systemctl reload 服务名
++ service
+ + 启动服务 : service 服务名 start
+ + 停止服务 : service 服务名 stop
+ + 重启服务 : service 服务名 restart
+ + 查看服务 : service 服务名 status
+
+```bash
+ps命令:用于列出当前正在运行的进程
+ps -aux:显示所有用户的所有进程
+ps -ef :以完整格式显示所有进程
+ps -e --forest :以树形结构显示进程关系
+
+kill命令:用于终止指定进程
+kill PID(是一个数字的PID)
+例 kill 1234 (该命令将向PID为1234的进程发送默认的终止信号)
+
+-1 或 -hangup
+例 kill -1 PID (挂起信号,通常用于重启或重新加载进程)
+
+-2 或 -interrupt
+例 kill -2 PID (中断信号,通常由Ctrl+C 发送给前台进程)
+
+-3 或 -quit
+例 kill -3 PID (退出信号,通常由Ctrl+\0发送给前台进程)
+
+kill -9 PID
+例 kill -9 5678 (使用强制终止信号,终止进程)
+
+-15 或 -terminate
+例 kill -15 PID (终止信号)
+
+-17 或 -stop
+例 kill -17 PID (暂停进程的执行)
+
+-18 或 -continue
+例 kill -18 PID (继续信号,恢复被停止的进程的执行)
+```
+