第四周作业

1. 自定义写出10个定时任务的示例:
比如每周三凌晨三点执行data命令
要求尽量的覆盖各种场景

#每周三晚上三点输出当前时间到指定文件
0 3 * * 3  date>>/data/date.txt
#每隔30分钟检查一下系统磁盘
*/30 * * * *  /usr/bin/sh /test/data/disk_check.sh>>/data/check.txt
#每隔2小时查询系统
0 */2 * * *  /usr/bin/sh /test/data/check_os.sh>>/data/check_os.txt
#8月每天早上6到12点每隔2小时打印hello
0 6-12/2 * 8 *  echo "Hello!" >>/data/hell0.txt
#1号、15号下午五点输出“welcome to Magedu!”
0 17 1,15 * *  echo "howdy";wall "welcome to Magedu!"
#星期一、三、五、七晚上一点执行备份
0 1 * * 1,3,5,7  sh /test/data/backup.sh
#周二到周四晚上0点重启apache
0 0 * *  2-4   systemctl restart httpd
#每天晚上1点10创建当前时间的文件
10 1 * * * touch /data/`date +\%F_\%H\%M`.txt
#每隔2小时查看/pro/meminfo以S或M开头输出到指定文件
0 */2 * * *  grep -E '^(S|M)' /proc/meminfo >/data/meminfo-`date +\%F_\%H\%M`.txt
#每2个月晚上3点删除/tmp目录下的文件
0 3  * */2 * rm -fr /tmp/*


2. 图文并茂说明Linux进程和内存概念

进程
进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。
进程一般由程序、数据集合和进程控制块三部分组成
  • 程序用于描述进程要完成的功能,是控制进程执行的指令集
  • 数据集合是程序在执行时所需要的数据和工作区
  • 程序控制块(简称PCB)包含进程的描述信息和控制信息,是进程存在的唯一标志
进程具有的特征
  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡
  • 并发性:如何进程都可以和其他进程一起并发执行
  • 独立性:进程是系统进行资源分配和调度的一个独立单位
  • 结构性:进程由程序、数据集合和进程控制块三部分组成
进程的基本状态
  • 创建状态:进程在创建时需要申请一个空白的PCB,向其中写入控制和改了进程的信息,完成资源分配
  • 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即执行
  • 执行状态:进程处于就绪状态被调度后,进程进入执行状态
  • 阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
  • 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
进程更多的状态
  • 运行态:running
  • 就绪态:ready
  • 睡眠态:分为两种,可中断:interruptable;不可中断:uninterruptable
  • 停止态:stopped,暂存与内存,但不会被调度,除非手动启动
  • 僵死态:zombie,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态的子进程

一个32位的操作系统中每一个进程的虚拟地址空间为4G,其中1G为内核空间,3G为用户空间,每个进程的用户空间分为代码段、数据段、BSS段、堆、栈5中不同的数据段

进程


3. 图文并茂说明Linux启动流程

Linux服务器启动流程
  • POST加电自检,加载BIOS的硬件信息,获取第一个启动设备
  • 读取第一个启动设备的MBR 引导加载程序(GRUB)的信息
  • kernel 加载操作系统的内核信息
  • 启动第一个init进程,获取默认的运行信息
  • init 执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统
  • 加载内核的外挂模块
  • init 执行运行的各个批处理文件
  • init执行/etc/rc.d/rc.local
  • 执行/bin/login程序,等待用户登录
  • 登录之后开始以shell控制主机
centos7之后的版本引导顺序
  1. UEFI或BIOS初始化,运行POST开机自检
  2. 选择启动设备
  3. 引导加载程序,centos7是grub2,加载装载程序的配置文件:/etc/grub.d  /etc/default/grub  /boot/grub2/grub.cfg
  4. 加载initrammfs驱动模块
  5. 加载内核选项
  6. 内核初始化
  7. 执行initrd.target所有单元,包括挂载/etc/fstab
  8. 从initramfs根文件系统切换到磁盘根目录
  9. systemd执行默认的target配置,配置文件/etc/systemd/system.default.target
  10. systemd执行sysinit.target初始化系统及basic.target准备操作系统
  11. systemd执行multi-user.target下的本机和服务器服务
  12. systemd执行multi-user.target下的/etc/rc.d/rc.local
  13. systemd执行multi-user.target下的getty.target及登录服务
  14. systemd执行graphical需要的服务


4. 自定义一个systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中。

check_file.service文件

root@rocky8 system]#cat check_file.service 
[Unit]
Description=The tmp dir is check file num server
After=network.target sshd.target

[Service]
Type=simple
ExecStart=/bin/bash /test/data/check_file.sh & 
ExecStop=ps -ef |grep check_file.service |awk '{print $2}'|xargs kill -9 2&1>/dev/null

[Install]
WantedBy=multi-user.target

创建好自定义文件后,必须systemctl daemon-reload

在远程主机tmp目录下创建三个文件,在本主机的file.log文件中医检测到增加了3个文件

停止服务


5. 写Linux内核编译安装博客

https://cdn.kernel.org/

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.292.tar.xz

tar -xvf linux-4.19.292.tar.xz

cd /data/linux-4.19.292

cp /boot/config-$(uname -r) .config

vim .config

#修改下面三行

CONFIG_MODULE_SIG=y#注释此行

CONFIG_SYSTEM_TRUSTED_KEYS=" "此行需修改

CONFIG_DEBUG_INFO_BTF=y  #注释此行

编译

yum -y install gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel bc perl

make bzImage

make modules_install

make installreboot


6. 总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。

  • 数据过滤:awk根据指定的条件过滤数据,在处理大量日志文件中非常有用。如:获取访问日志文件中的ip和时间
  • 统计分析:awk具有内建的计数和聚合功能,可以轻松进行数据计数和分析。如:统计文件中某个字符或者单词出现的次数
  • 文本格式化和生成报表:awk 根据特定规则对文本进行格式化,生成报表。如:生成学生成绩表格
  • 数据提取和转换:awk根据特定的分隔符或者正则表达式提取数据,对数据进行排序、转换等。如:获取passwd中的用户名和id
  • 结合条件判断和循环,实现复杂数据的处理。如:监控IP并发连接超过阈值时,调用防火墙命令封掉对应IP

  发散题:

  字符串处理,结合gsub函数对字符串将匹配到的内容全部替换成新内容

[11:36:13 root@rocky8 ~]#echo "2023:08:22 11:20:30"|awk '{gsub(/:/,"-",$1);print $0}'
2023-08-22 11:20:30

  处理网站访问量最大的前3个ip

[root@centos7~]#awk '{print $1}' nginx.log|sort|uniq -c|sort -nr|head -3
 704263 222.133.18.214
 637295 120.76.115.230
 103448 175.27.244.137

 

posted @ 2023-08-22 12:34  探索提升  阅读(8)  评论(0)    收藏  举报