Linux 云计算 SRE 第四周学习作业

目录

1. 自定义写出10个定时任务的示例:

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

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

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

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

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


1. 自定义写出10个定时任务的示例:

比如每周三凌晨三点执行data命令,要求尽量的覆盖各种场景

[root@rocky8 ~]$crontab -e

  1. 1 每天9点备份/etc/passwd目录下的内容到backup
 * 9 * * * cp -a /etc/passwd /backup
  1. 2 每天12:30分关闭ssh服务
30 12 * * * systemctl stop sshd 
  1. 3 每天12点开启httpd服务
* 12 * * * systemctl start httpd
  1. 4 1月和5月创建一个passwd.txt文件
* * 1,5 * * touch passwd.txt 
  1. 5 每个月清理一次交换空间
* * * 1-12/1 * swapoff -a && swapon -a
  1. 6 9点10分,10点10分执行一次“ss -nta”命令
10 9-10 * * * ss -nta
  1. 7 每两天2:30ping一次百度
30 2 */2 * * ping www.baidu.com
  1. 8 每两小时取出/porc/meminfo文件中以S开头的信息追加到passwd.txt文件中
* */2 * * * cat/proc/meminfo | grep -e "^S" >> passwd.txt
  1. 9 每天23点30分定时关机
30 23 * * * shutdown -h now
  1. 10 工作日周一到周五1>点30备份nginx日志到指定目录
30 1 * * 1-5 cp -a /var/log/nginx/access.log /backup


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

Linux进程

 

进程:运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位。

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度 的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。

进程的组成:进程一般由程序、数据集合和进程控制块三部分组成。

程序用于描述进程要完成的功能,是控制进程执行的指令集; 数据集合是程序在执行时所需要的数据和工作区; 程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一 标志。

进程具有的特征:

动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

并发性:任何进程都可以同其他进程一起并发执行;

独立性:进程是系统进行资源分配和调度的一个独立单位;

结构性:进程由程序、数据和进程控制块三部分组成。

内存

内存(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

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

4.1 这个其他服务器是10.0.0.129
[17:35:48 root@rocky8 ~]#vim check_tmp.sh
[17:39:37 root@rocky8 ~]#cat check_tmp.sh 
#!/bin/bash
NUM1=6
NUM2=`ls /tmp | wc -l`
if [[ $NUM2 != $NUM1 ]];then
echo $NUM2 >> check_tmp.txt
fi
 4.2 本机上
[root@rocky8 ~]$vim /lib/systemd/system/check_tmp.service
[root@rocky8 ~]$cat /lib/systemd/system/check_tmp.service 
[Unit]
Description=Check Tmp

[Service]
TimeoutStartSec=0
ExecStart=/bin/sh -c "ssh -t -t root@10.0.0.129 sh /root/check_tmp.sh"
ExecStop=ps aux | grep check_tmp.sh | awk '{print $2}' | xargs kill -9

[Install]
WantedBy=multi-user.target

[root@rocky8 ~]$systemctl daemon-reload 
[root@rocky8 ~]$systemctl start check_tmp.service
 4.3 10.0.0.129上
[17:46:16 root@rocky8 ~]#cat check_tmp.txt
5

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

Linux机器在某个发行版上编译安装指定的版本用途:为了适配不同应用的需求,需要应对使用更高的内核版本需要执行操作
1.下载内核文件(stable版本),自选内核版本,目前使用centos 7.9的内核版本:uname -r
3.10.0-1160.15.2.el7.x86_64
2.安装编译内核文件必要的依赖库
3.配置内核编译参数
4.编译内核
5.安装内核
6.修改默认启动的内核,centos7:/boot/grub2/grub.cfg
7.重启机器,验证版本变更:uname -r 


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

6.4 取出分区利用率
[17:47:00 root@rocky8 ~]#df | awk '{print $1,$5}'
文件系统 已用%
devtmpfs 0%
tmpfs 0%
tmpfs 2%
tmpfs 0%
/dev/mapper/rl-root 10%
/dev/sr0 100%
/dev/mapper/testvg0-lv--mysql 1%
/dev/mapper/rl-home 1%
/dev/sda1 26%
tmpfs 1%
tmpfs 0%
6.2 取出用户和组
[root@rocky8 ~]$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
cxz cxz
postfix 
chrony 
tcpdump 
clevis Clevis Decryption Framework unprivileged user
cockpit-ws User for cockpit web service
cockpit-wsinstance User for cockpit-ws instances
setroubleshoot 
6.3 取IP地址
[root@rocky8 ~]$ifconfig eth0 | awk '/netmask/{print $2}'
10.0.0.130
6.4 只取/etc/fstab文件中的注释行
[root@rocky8 ~]$awk '/^#/' /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 11 09:41:03 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
6.5 awk实现while循环计算
[root@rocky8 ~]$awk 'BEGIN{i=1;sum=0;while(i<=100){sum+=i;i++};{print sum}}'
5050
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

途中刂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值