首页 > 其他分享 >第四周

第四周

时间:2022-12-14 00:33:40浏览次数:45  
标签:systemd kconfig HOSTCC scripts 进程 四周 target

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

[root@localhost ~]$ crontab -e
HELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

* * * */3 * rm -rf /tmp #每三个月删除一次垃圾文件
30 1 * * * cp  -a /data/mysqldata  /backup #,每天1点30分备份mysql数据
30 6 */10 * *  ls #每10天的6点30分执行ls命令
0 2 * * * /bin/sh backup.sh#每天凌晨2点执行backup脚本
*  *  6,12 * * ls #6月和12月执行ls命令
10 1 * * 6  systemctl restart httpd #每周六1点10分重启http服务
50 7 * * * systemctl start sshd  #每天7:50开启ssh服务
50 1 * * * systemctl stop nginx  #每天1:50关闭nginx服务  
30 * * * * /data/check.sh #每30分钟执行一次check.sh脚本
0 2 * * * tar -zcf /var/log/mysql/* /data/log/mysql-`date _%F`log.tar.gz#每天凌晨2点打包/var/log/mysql/下的所有日志到/data/log/目录下

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

 

 

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

进程ID(Process ID,PID)号码被用来标记各个进程

UID、GID、和SELinux语境决定对文件系统的存取和访问权限

通常从执行进程的用户来继承

存在生命周期

进程创建:

init:第一个进程,从 CentOS7 以后为systemd

进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度
的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。
进程的组成
进程一般由程序、数据集合和进程控制块三部分组成。
程序用于描述进程要完成的功能,是控制进程执行的指令集;
数据集合是程序在执行时所需要的数据和工作区;
程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一
标志。
进程具有的特征:
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进程一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;
结构性:进程由程序、数据和进程控制块三部分组成。

 

 内存:是运行进程的空间,CPU待处理的数据和运行的程序暂时存储的空间

MMU:Memory Management Unit 负责虚拟地址转换为物理地址

程序在访问一个内存地址指向的内存时,CPU不是直接把这个地址送到内存总线上,而是被送到

MMU(Memory Management Unit),然后把这个内存地址映射到实际的物理内存地址上,然后通过总

线再去访问内存,程序操作的地址称为虚拟内存地址

TLB:Translation Lookaside Buffer 翻译后备缓冲区,用于保存虚拟地址和物理地址映射关系的缓存

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

 

 CentOS 6启动

(1) 加载BIOS的硬件信息,获取第一个启动设备
(2) 读取第一个启动设备MBR的引导加载程序(grub)的启动信息
(3) 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
(4) 核心执行init程序,并获取默认的运行信息
(5)init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统
(6)启动核心的外挂模块
(7)init执行运行的各个批处理文件(scripts)
(8) init执行/etc/rc.d/rc.local
(9)执行/bin/login程序,等待用户登录
(10)登录之后开始以Shell控制主机 

CentOS7之后

(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 [email protected] find /tmp/ -mtime 2 |wc -l >> log.txt"  
ExecStop=/bin/kill sh
[Install]
Wantedby=multi-user.target

systemctl daemon-reload
systemctl enable --now find.service

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

#下载linux内核 https://www.kernel.org/
#解压内核源码

tar xvf linux-5.16.14.tar.xz -C /usr/src/
ln -sv linux-5.16.14 linux
'linux' -> 'linux-5.16.14'
cd /usr/src/
ls
debug kernels linux linux-5.16.14

#配置依赖的环境

yum install groupinstall Development Tools
yum install ncurses-devel
yum install elfutils-libelf-devel
yum install openssl-devel
yum install bc

#进入源码目录,使用make menuconfig开启菜单选项,手动选择内核功能

[root@localhost linux]# make menuconfig
HOSTCC scripts/basic/fixdep
UPD scripts/kconfig/mconf-cfg
HOSTCC scripts/kconfig/mconf.o
HOSTCC scripts/kconfig/lxdialog/checklist.o
HOSTCC scripts/kconfig/lxdialog/inputbox.o
HOSTCC scripts/kconfig/lxdialog/menubox.o
HOSTCC scripts/kconfig/lxdialog/textbox.o
HOSTCC scripts/kconfig/lxdialog/util.o
HOSTCC scripts/kconfig/lxdialog/yesno.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o

HOSTLD scripts/kconfig/mconf

 

 

 配置完成后会生成.config的隐藏文件

#编译内核

make -j 2

#安装模块

make modules_install

#安装内核

make install

安装完成后会在/boot目录下生成新的内核文件

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

#查看磁盘使用率
df | sed -rn '/^\/dev\/sd/ s#(\S+\s+){4}(.*)%.*#\2#p'
df | awk -F"[[:space:]]+|%" '$0 ~ /^\/dev/{if($5>70)print $1,$5}'

#连接数最多的前3个IP
ss -nt|awk -F: '{print $(NF-1)}' |awk '/^[0-9]/{print $NF}'| sort |uniq -c |head -n 3
#显示主机的连接状态出现的次数
awk 'NR!=1{print $1}' ss.log |sort |uniq -c
#查询登录不成功的主机及次数
lastb |awk '{print $3}'|sort |uniq -c|sort -nr

标签:systemd,kconfig,HOSTCC,scripts,进程,四周,target
From: https://www.cnblogs.com/songguoshun/p/16964801.html

相关文章