第四周作业
完成作业:
1. 自定义写出10个定时任务的示例:
#创建备份数据库脚本 vim bakmysql.sh rq=` date +%Y%m%d ` tar zcf /data/mysql$rq.tar.gz /var/lib/mysql
crontab -e
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 30 1 * * * ntpdate ntp1.aliyun.com 0 2 * * * bash bakmysql.sh 0 3 * * * rsync -azu --ignore-existing /data/ root@192.168.50.188:/data/backup/ #基于key验证传输
2. 图文并茂说明Linux进程和内存概念
Process: 运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
进程ID(Process ID,PID)号码被用来标记各个进程
UID、GID、和SELinux语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
存在生命周期
进程创建:
init:第一个进程,从 CentOS7 以后为systemd
进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write
进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度
的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。
进程的组成
进程一般由程序、数据集合和进程控制块三部分组成。
程序用于描述进程要完成的功能,是控制进程执行的指令集;
数据集合是程序在执行时所需要的数据和工作区;
程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一
标志。
进程具有的特征:
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进程一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;
结构性:进程由程序、数据和进程控制块三部分组成。
MMU:Memory Management Unit 负责虚拟地址转换为物理地址
程序在访问一个内存地址指向的内存时,CPU不是直接把这个地址送到内存总线上,而是被送到
MMU(Memory Management Unit),然后把这个内存地址映射到实际的物理内存地址上,然后通过总
线再去访问内存,程序操作的地址称为虚拟内存地址
TLB:Translation Lookaside Buffer 翻译后备缓冲区,用于保存虚拟地址和物理地址映射关系的缓存
3. 图文并茂说明Linux启动流程
打开电源
1. UEFi或BIOS初始化,运行POST开机自检
2. 选择启动设备
3. 引导装载程序, centos7是grub2,加载装载程序的配置文件:
/etc/grub.d/
/etc/default/grub
/boot/grub2/grub.cfg
4. 加载initramfs驱动模块
5. 加载内核选项
6. 内核初始化,centos7使用systemd代替init
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/下文件的个数,如果发现数量有变化就记录变化情况到文件中。
vim /lib/systemd/system/find.service [Unit] Description=find [Service] TimeoutStartSec=0 ExecStart=/bin/sh -c "ssh root@192.168.50.131 find /tmp/ -mtime 2 |wc -l >> log.txt" #基于key验证 ExecStop=/bin/kill sh [Install] Wantedby=multi-user.target systemctl daemon-reload systemctl enable --now find.service
5. 写Linux内核编译安装博客
#下载linux内核 https://www.kernel.org/ #将下载的内核包上传到linux yum -y install gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel bc perl tar xf linux-5.18.9.tar.xz -C /usr/local/src cd /usr/local/src/linux-5.18.9 cp /boot/config-$(uname -r) .config vim .config #修改下面三行 # CONFIG_MODULE_SIG=y #注释此行 CONFIG_SYSTEM_TRUSTED_KEYS="" #修改此行 # CONFIG_DEBUG_INFO_BTF=y
#更改内核版本名称
make menuconfig
General setup ➡️ Local version - append to kernel release ➡️ -m67-magedu ➡️ save
make -j 8 #多少核就写多少,此处很慢 make modules_install make install
reboot
6. 总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。"
1#查询登录不成功的主机及次数 lastb |awk '{print $3}'|sort |uniq -c|sort -nr 2#截取主机ip地址 ifconfig |awk 'NR==2{print $2 }'
3#