第四周作业-N67044-张铭扬
1. 自定义写出10个定时任务的示例:
比如每周三凌晨三点执行data命令
要求尽量的覆盖各种场景
1)每天早上8点对磁盘使用率进行查看,若超出空间的80%,则发邮件报警
[root@centos8 ~]#cat check_disk.sh #!/bin/bash warning=80 used=`df |grep -Eo '[0-9]+%'|grep -Eo [0-9]+ |sort -rn|head -1` [$used -gt $warning ] && echo Disk will be full! |mail -s worning 857376512@qq.com [root@centos8 ~]#crontab -l * 8 * * * /root/check_disk.sh
2)每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
30 1 * * 1-5 cp -a /etc /backup/etcbak-`date -d -1day
3)每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中
* */2 * * * cat/proc/meminfo | grep -e "^S" -e "^M" >> /tmp/meminfo.txt
2. 图文并茂说明Linux进程和内存概念
1)进程
进程:运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位。
进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度 的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。
进程的组成:进程一般由程序、数据集合和进程控制块三部分组成。
程序用于描述进程要完成的功能,是控制进程执行的指令集; 数据集合是程序在执行时所需要的数据和工作区; 程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一 标志。
进程具有的特征:
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进程一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;
结构性:进程由程序、数据和进程控制块三部分组成。
2)内存
内存(Memory)是计算机的重要部件,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。
3. 图文并茂说明Linux启动流程
1)硬件启动POST
POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内 存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测
主板的ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出 程序,系统信息设置、开机加电自检程序和系统启动自举程序等
主板的RAM:CMOS互补金属氧化物半导体,保存各项参数的设定,按次序查找引导设备,第一个有引 导程序的设备为本次启动设备
2)启动加载器bootloader
bootloader: 引导加载器,引导程序
Windows: ntloader,仅是启动OS
Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装 载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
Linux的bootloader
LILO:LInux LOader,早期的bootloader,功能单一
GRUB: GRand Unified Bootloader, CentOS 5,6 GRUB 0.97: GRUB Legacy, CentOS 7 以后使 用GRUB 2.02
GRUB 启动阶段
primary boot loader :
1st stage:MBR的前446个字节
1.5 stage:MBR 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
secondary boot loader :2nd stage,分区文件/boot/grub/
3)加载kernel
kernel 自身初始化过程
1. 探测可识别到的所有硬件设备
2. 加载硬件驱动程序(借助于ramdisk加载驱动)
3. 以只读方式挂载根文件系统
4. 运行用户空间的第一个应用程序:/sbin/init
Linux内核特点:
支持模块化:.ko(内核对象),如:文件系统,硬件驱动,网络协议等
支持内核模块的动态装载和卸载
内核组成部分:
核心文件:/boot/vmlinuz-VERSION-release
ramdisk:辅助的伪根系统,加载相应的硬件驱动,ramdisk --> ramfs 提高速度
CentOS 5 /boot/initrd-VERSION-release.img
CentOS 6 以后版本 /boot/initramfs-VERSION-release.img
模块文件:/lib/modules/VERSION-release
4)init初始化
1.运行级别:为系统运行或维护等目的而设定;0-6:7个级别,一般使用3, 5做为默认级别
2.初始化脚本 sysinit
(1) 设置主机名
(2) 设置欢迎信息
(3) 激活udev和selinux
(4) 挂载/etc/fstab文件中定义的文件系统
(5) 检测根文件系统,并以读写方式重新挂载根文件系统
(6) 设置系统时钟
(7) 激活swap设备
(8) 根据/etc/sysctl.conf文件设置内核参数
(9) 激活lvm及software raid设备
(10)加载额外设备的驱动程序
(11)清理操作
3)服务管理
4)开机启动文件 rc.local
5.写Linux内核编译安装博客
1)提前准备安装软件包
[root@centos8 ~]#yum -y install gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel perl perl-devel
2)修改配置
[root@centos8 ~]#tar xf linux-5.4.13.tar.xz -C /usr/local/src [root@centos8 ~]#cd /usr/local/src
[root@centos8 src]# cd linux-5.11.15/ [root@centos8 linux-5.11.15]#cp /boot/config-4.18.0-348.el8.x86_64 .config
[root@centos8 linux-5.11.15]##vim .config
#修改下面三行 # CONFIG_MODULE_SIG=y #注释此行 CONFIG_SYSTEM_TRUSTED_KEYS="" #修改此行 # CONFIG_DEBUG_INFO_BTF=y #linux-5.8.5版本后需要注释此行
3)配置选项
[root@centos8 linux-5.11.15]# make menuconfig
4)开始安装
[root@centos8 linux-5.11.15]#make -j 2
[root@centos8 linux-5.11.15]#make modules_install
[root@centos8 linux-5.11.15]# make install
sh ./arch/x86/boot/install.sh 5.11.15-zmy-linux arch/x86/boot/bzImage \
System.map "/boot"
6. 总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。"
1)取出分区利用率
[root@centos8 ~]# df | awk '{print $1,$5}' Filesystem Use% devtmpfs 0% tmpfs 0% tmpfs 1% tmpfs 0% /dev/nvme0n1p1 11% /dev/nvme0n1p2 1% /dev/nvme0n1p5 16% tmpfs 0%
2)取出用户和组
[root@centos8 ~]# awk -F: '{print $1,$5}' /etc/passwd root root bin bin daemon daemon adm adm lp lp sync sync shutdown shutdown halt halt mail mail operator operator games games ftp FTP User nobody Kernel Overflow User dbus System message bus systemd-coredump systemd Core Dumper systemd-resolve systemd Resolver tss Account used for TPM access polkitd User for polkitd unbound Unbound DNS resolver sssd User for sssd sshd Privilege-separated SSH zhang zhang apache Apache