作业-第四周
1. 自定义写出10个定时任务的示例:
比如每周三凌晨三点执行data命令
要求尽量的覆盖各种场景
at 路径:/var/spool/at/
cron 创建:crontab -e 路径:/var/spool/cron/
1.4小时以后创建一个账号
at now+4hours
> useradd jin
2. 2天后的11点执行备份脚本
at 11:00 +2 days < /data/backup.sh
3.分别在每月1/10/20日凌晨2点或每周六和周日的凌晨2点执行脚本
0 2 1,10,20 * 0,6 /data/scripts/test.sh
4.每天半夜两点半做备份:
30 2 * * * /data/backup.sh
5.每周六日的半夜两点半做备份:
30 2 * * 6,7 /data/backup.sh
6.11月每天的6-12点每隔2小时执行/app/bin/test.sh
0 6-12/2 * 11 * /app/bin/test.sh (6.8.10.12点整)
0 5-12/2 * 11 * /app/bin/test.sh (7.9.11点整)
0 */2 * * * grep ^[SM] /proc/meminfo >> /tmp/meminfo.txt
8.工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就执行wall报警
*/10 * * * 1-5 [ df|awk -F" +|%" 'NR>=2{print $5}'|sort -rn |head -n1 -gt 80 ]&&echo "wall at job"
9、每周三凌晨3点执行data命令
0 3 * * 3 /data/backup.sh
10.在2023年的1月1日0点0时0分将/etc备份到backup中
cp /etc /backup/etcbak-`date +%F-%H` .tar.xz | at 0:00 2023-01-01
11.每周的工作日1:30,将/etc/备份至/backup目录中,保存的文件名称格式为"etcbak -yyyy-mm-dd-HH.tar.xz",其中日期是前一天的时间
30 1 * * 1-5 cp /etc /backup/etcbak-`date -d '-1 day' +%Y-%m-%d-%H` .tar.xz
2. 图文并茂说明Linux进程和内存概念
进程概念
-
进程ID(process id PID ),号码被用来标记各个进程
-
UID.GID.和SElinux语境决定对文件系统的存取和访问权限
-
通常从执行进程的用户来继承
-
存在生命周期
-
init:第一个进程,从centos7以后systemd
-
进程:都由其父进程创建,fork(),父子关系,COW:CopyOnWrite
进程结构:
进程是一个具有一定独立功能的程序在一个数据集上的一个动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一个抽象的概念,从来没有统一的标准定义。
进程由内存空间(代码,数据,进程空间,打开的文件)和一个或多个线程组成。而线程由线程ID,当前指令指针(pc),寄存器和堆栈组成。进程之间相互独立。
进程状态:
-
创建状态:进程在创建时需要申请一个空白pcb(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
-
就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能立即运行。
-
执行状态:进程处于就绪状态被调度后,进程进入执行状态
-
阻塞状态;正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程收到阻塞。在满足请求时进入就绪状态等待系统调用。
-
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
内存:
内存空间分为用户空间和内核空间
用户空间包括(0-3G):代码段、数据段、BSS、堆、栈
-
代码段:用来存放可执行文件的操作指令,也就是说它是可执行程序在内存中的镜像。代码段需要在运行时被非法修改,所以只允许读取操作,而不允许写入(修改)操作--它是不可取的
-
数据段:用来存放可执行文件中已初始化全局变量,换句话说就是存放程序静态分配的变量和全局变量
-
BSS段:Block Started by Symbol 的缩写,意为以符号开始的块,BSS段包含了程序中未初始化的全局变量,在内存中BSS段全部置0
-
堆(heap):存放数组和对象,堆就是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆)
- 栈(stack):栈是用户存放程序临时创建的局部变量,,也就是说我们为您函数括弧“{}”中定义的变量
内核空间包括(3G-4G):物理内存线性映射、8MB.4KB.4KB.128KB
3. 图文并茂说明Linux启动流程
centos6启动流程:
4. 自定义一个systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中。
1.其他服务器:10.0.0.128 编辑文件:
vim check_tmp.sh
2.vim /lib/systemd/system/check_tmp.service
3.systemctl daemon-reload
4.systemctl start check_tmp.service
5.查看10.0.0.128上/tmp下文件的个数,会放在check_tmp.txt文件中
5. 写Linux内核编译安装博客
没学
6. 总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。
1)AWK有多个版本
AWK:原先来源于 AT & T 实验室的的AWK
NAWK:New awk,AT & T 实验室的AWK的升级版
目前linux中使用的awk为 GNU AWK ,它与AWK和NAWK完全兼容
2)gawk:模式扫描和处理语言,可以实现下面功能
文本处理
输出格式化的文本报表
执行算数运算
执行字符串操作
3)awk的优势
gawk自身属于一种语言,也属于文本处理工具三剑客之一,其功能强大,可以利用正则表达式进行搜索特定行,打印特定列,也可以利用内置函数或者自定义函数,进行其它操作。举例:
- 取分区利用率:df | awk -F" +|%" '{print $5}'
- 提取出/etc/passwd 中的第一 三列,第一列左对齐留20个字符宽度,第二列左对齐留10各字符宽度
awk -F: '{printf "%-20s %-10s\n",$1,$3}' /etc/passwd
- 结合条件判断:if-else语句,switch语句
awk 'BEGIN{score=90;if(score>=80){print "good"}else if(score>=60){print "pass"}else{print "nopass"}}'
- 结合循环语句while
awk 'BEGIN{i=1;sum=0;while(i<=100){sum+=i;i++};print sum}'