N80-42 河北-王滔 4星期作业

Xshell 7 (Build 0128) Copyright (c) 2020 NetSarang Computer, Inc. All righ Type `help' to learn how to use Xshell prompt. [C:\~]$ ssh root@192.168.124.144 Connecting to 192.168.124.144:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. WARNING! The remote SSH server rejected X11 forwarding request. Activate the web console with: systemctl enable --now cockpit.socket Last login: Sat Jul 29 21:29:42 2023 from 192.168.124.1 [root@zhu ~]# ls 1 1.txt 2.sh 2.sql 定时脚本和自定义脚本.sh anaconda-ks.cfg full.tar hellodb_innodb.sql mysql80-community-release-el7-1.noarch.rpm nohup.out percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm percona-xtrabackup-80-8.0.32-26.1.el8.x86_64.rpm Webyog-SQLyog-Ultimate12.0.8.0.zip wordpress wordpress-6.2.2-zh_CN.zip [root@zhu ~]# mv 定时脚本和自定义脚本.sh dingshi.sh [root@zhu ~]# vim dingshi.sh [root@zhu ~]# cd /usr/lib [root@zhu lib]# ls binfmt.d jvm-private python3.6 cpp kbd realmd debug kdump rpm dracut kernel sendmail eclipse libkmip.a sendmail.postfix environment.d libkmippp.a sse2 firewalld locale sysctl.d firmware mdadm sysimage fontconfig modprobe.d systemd games modules sysusers.d gcc modules-load.d tmpfiles.d grub NetworkManager tuned java os-release udev jvm polkit-1 jvm-commmon private [root@zhu lib]# vim /etc/system systemd/ system-release-cpe system-release [root@zhu lib]# vim /etc/system systemd/ system-release-cpe system-release [root@zhu lib]# vim /etc/systemd/system system/ system.conf [root@zhu lib]# vim /etc/systemd/system/tmp-ll-wc.service [root@zhu lib]# vim /etc/systemd/system/tmp-ll-wc.service [root@zhu lib]# systemctl enable my-demo.service Failed to enable unit: Unit file my-demo.service does not exist. [root@zhu lib]# systemctl enable --now my-demo.service Failed to enable unit: Unit file my-demo.service does not exist. [root@zhu lib]# systemctl enable --now tmp-ll-wc.service Created symlink /etc/systemd/system/multi-user.target.wants/tmp-ll-wc.service → /etc/systemd/system/tmp-ll-wc.service. Job for tmp-ll-wc.service failed because the control process exited with error code. See "systemctl status tmp-ll-wc.service" and "journalctl -xe" for details. [root@zhu lib]# ls binfmt.d jvm-private python3.6 cpp kbd realmd debug kdump rpm dracut kernel sendmail eclipse libkmip.a sendmail.postfix environment.d libkmippp.a sse2 firewalld locale sysctl.d firmware mdadm sysimage fontconfig modprobe.d systemd games modules sysusers.d gcc modules-load.d tmpfiles.d grub NetworkManager tuned java os-release udev jvm polkit-1 jvm-commmon private [root@zhu lib]# cd ~ [root@zhu ~]# vim dingshi.sh [root@zhu ~]# vim dingshi.sh [root@zhu ~]# systemctl enable --now tmp-ll-wc.service Job for tmp-ll-wc.service failed because the control process exited with error code. See "systemctl status tmp-ll-wc.service" and "journalctl -xe" for details. [root@zhu ~]# vim /etc/init.d/ functions README [root@zhu ~]# ls 1 1.txt 2.sh 2.sql anaconda-ks.cfg dingshi.sh full.tar hellodb_innodb.sql mysql80-community-release-el7-1.noarch.rpm nohup.out percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm percona-xtrabackup-80-8.0.32-26.1.el8.x86_64.rpm Webyog-SQLyog-Ultimate12.0.8.0.zip wordpress wordpress-6.2.2-zh_CN.zip [root@zhu ~]# vim 2.sh [root@zhu ~]# cp 2.sh /etc/init.d/ [root@zhu ~]# cd /etc/init.d/ [root@zhu init.d]# ls 2.sh functions README [root@zhu init.d]# vim functions [root@zhu init.d]# chkcofig --add 2.sh -bash: chkcofig: 未找到命令 [root@zhu init.d]# ls 2.sh functions README [root@zhu init.d]# /etc/init.d/2.sh start -bash: /etc/init.d/2.sh: 权限不够 [root@zhu init.d]# chmod 700 2.sh [root@zhu init.d]# /etc/init.d/2.sh start [root@zhu init.d]# cat<<EOF>0.sh > :^C [root@zhu init.d]# chkconfig --add chen 服务 chen 信息读取出错:没有那个文件或目录 [root@zhu init.d]# chkconfig --add 2.sh 服务 2.sh 不支持 chkconfig [root@zhu init.d]# 2.sh --add chen -bash: 2.sh: 未找到命令 [root@zhu init.d]# chkconfig --add 2.sh 服务 2.sh 不支持 chkconfig [root@zhu init.d]# chkconfig --add 4 服务 4 信息读取出错:没有那个文件或目录 [root@zhu init.d]# chkconfig --add chen 服务 chen 信息读取出错:没有那个文件或目录 [root@zhu init.d]# chkconfig --add chen 服务 chen 信息读取出错:没有那个文件或目录 [root@zhu init.d]# chkconfig chen off 服务 chen 信息读取出错:没有那个文件或目录 [root@zhu init.d]# cd ~ [root@zhu ~]# vim dingshi.sh [root@zhu ~]# bash dingshi.sh 1) 定时任务 2) 自定时务 3) 定时任务sh 4) 自定服务 5) 退出 输入操作:4 自定服务完成 输入操作:2 dingshi.sh: /etc/init.d/8.sh: bin/bash: 解释器错误: 没有那个文件或目录 自定时务完成 [root@zhu ~]# 1 -bash: 1: 未找到命令 [root@zhu ~]# vim dingshi.sh [root@zhu ~]# bash dingshi.sh 1) 定时任务 2) 自定时务 3) 定时任务sh 4) 自定服务 5) 退出 输入操作:4 dingshi.sh: /etc/init.d/8.sh: bin/bash: 解释器错误: 没有那个文件或目录 自定服务完成 输入操作:5 退出完成 [root@zhu ~]# vim /etc/init.d/8.sh [root@zhu ~]# bash dingshi.sh 1) 定时任务 2) 自定时务 3) 定时任务sh 4) 自定服务 5) 退出 输入操作:4 dingshi.sh: /etc/init.d/8.sh: bin/bash: 解释器错误: 没有那个文件或目录 自定服务完成 输入操作:^[[A^[[A5 错误 输入操作:^[[A 错误 输入操作:5 退出完成 [root@zhu ~]# vim dingshi.sh [root@zhu ~]# vim /etc/init.d/8.sh [root@zhu ~]# bash dingshi.sh 1) 定时任务 2) 自定时务 3) 定时任务sh 4) 自定服务 5) 退出 输入操作:4 dingshi.sh: /etc/init.d/8.sh: bin/bash: 解释器错误: 没有那个文件或目录 自定服务完成 输入操作:^[[A^[[A5 错误 输入操作: 1) 定时任务 2) 自定时务 3) 定时任务sh 4) 自定服务 5) 退出 输入操作:5 退出完成 [root@zhu ~]# vim /etc/init.d/8.sh [root@zhu ~]# bash /etc/init.d/8.sh /etc/init.d/8.sh: 第 9 行:[: 参数太多 [root@zhu ~]# vim /etc/init.d/8.sh [root@zhu ~]# bash /etc/init.d/8.sh [root@zhu ~]# vim dingshi.sh #!/bin/bash function aa(){ read -p "输入 要创建的文件 " cat<<EOF> /etc/cron.d/2 * * * * * bash tmp/1.sh * * * * * ll * * * * * wc -l * * * * * data * * * * * dn -l EOF } function cc(){ read -p "输入要执行的日期 " aa read -p "输入要执行的命令 " bb 16,1 顶端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | #!/bin/bash function aa(){ read -p "输入 要创建的文件 " cat<<EOF> /etc/cron.d/2 * * * * * bash tmp/1.sh * * * * * ll * * * * * wc -l * * * * * data * * * * * dn -l EOF } function cc(){ read -p "输入要执行的日期 " aa read -p "输入要执行的命令 " bb read -p "输入要创建的文件名 " dd cat <<EOF>/etc/cron.d/$dd $aa $bb EOF ~ ~ } function hh (){ read -p "输入要执行的日期 " aa read -p "输入要创建的文件名 " dd cat <<EOF>/etc/cron.d/$dd $aa ll /tmp |wc -l EOF } function bb(){ PS3= '输入操作:' foods=( "定时任务" "自定时务" "定时任务sh" "自定服务" "退出" ) select bb in "${foods[@]}" ; do case $bb in "定时任务" ) aa || echo "没完成1" ;exit; echo "定时任务完成" exit ;; "自定时务" ) cc echo "自定时务完成" exit ;; "定时任务sh" ) hh echo "用定时任务来运行sh脚本完成" ;; "自定服务" ) echo "自定服务完成" ;; "退出" ) echo "退出完成" exit ;; * ) echo "错误 " ;; esac done } bb |
部分代码
Linux的进程和内存的概念
1、进程相关概念
进程:正在运行中的程序
内核功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
Process:运行中的程序的一个副本,是被载入内存的一个指令集合
进程 ID(Process ID,PID)号码被用来标记各个进程
通常从执行进程的用户来继承,存在生命周期
task struct 任务结构表:Linux 内核存储进程信息的数据结构格式
task list 任务列表:多个任务的 task struct 组成的链表
进程创建:
都由其父进程创建,父好关系,CoW(写时复制,不发生改变时父子都指向同一文件;发生改变时,则复制)
init:第一个进程(centos6:init,centos7:systemd)
守护进程:随着计算机的开启、关闭而随之开启、关闭。
2、进程,线程和协程:
注:一个进程里至少有一个线程;线程之间由操作系统进行调度,包括进程中使用的资源也由操作系统进行调度;协程相当于线程中的语句块,由线程控制。
3、Page Frame:页框,用存储页面数据,存储 Page,每个进程要使用的分配空间
虚拟内存(线性内存):进程运行的时候以为自己拥有了全部的内存空间
物理地址空间和线性地址空间:
MMU:负责转换线性和物理地址(虚拟内存和物理内存)
TLB:翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存
LRU:近期最少使用算法,释放内存
4、用户空间和内核空间:
5、进程之间基本状态和转换:
创建状态:进程在创建时需要申请一个空白 PCB(进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态。
就绪状态:进程已准备好,已分配到所需资源,只要分配到 CPU 就能够立即运行。
执行状态:进程处于就绪状态被调度后,进程进入执行状态。
阻塞状态:正在执行的进程由于某些事件(I/O 请求,申请缓存区失败)而暂时无法运行,进程受到阻塞,在满足请求时进入就绪状态等待系统调用。
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态,无法再执行。
状态之间转换六种情况:
运行 → 就绪:1,主要是进程占用 CPU 的时间过长,而系统分配给该进程占用 CPU 的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出 CPU,该进程便由执行状态转变为就绪状态。
就绪 → 运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配 CPU。
运行 → 阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态如发生了 I/O 请求。
阻塞 → 就绪:进程所等待的事件已经发生,就进入就绪队列。
以下两种状态是不可能发生的:
阻塞 → 运行:即使给阻塞进程分配 CPU,也无法执行,操作系统在进行调度时,不会从阻塞队列进行挑选,而是从就绪队列中选取。
就绪 → 阻塞:就绪态根本就没有执行,谈不上进入阻塞态。
6、IPC 进程间通信:
同一主机:
pipe 管道,一个写入管道文件,一个读(单向)
socket 套接字文件,进程间交换数据(双工工作方式)
signal 信号
shm shared memory,共享内存
semaphore 信号量,一种计数器,分配资源
不同主机:
socket ip 和端口号
RPC 远程过程调用
MQ 消息队列,如:Kafka , RabbitMQ,ActiveMQ
7、进程优先级
实时进程(realtime),基于 FIFO 先进先出或 RR 轮询
非实时进程:nice 按时间片分配进程
取 139 个队列,将相同优先级的放在一个队列中,运行一个时间片后从运行队列转至过期队列。轮回运行队列和过期队列互调,再运行。
进程优先级:
系统优先级:数字越小,优先级越高
0-139:各有 140 个运行队列和过期队列
实时优先级:99-0 值最大优先级最高
nice 值:-20 到 19,对应系统优先级 100-139
Big 0:时间复杂度,用时和规模的关系
0(1),O(logn),O(n)线性,O(n^2)抛物线,O(2^n)
8、进程状态:
Linux 内核:抢占式多任务,按时间片分配任务
进程类型:
守护进程:daemon,在系统引|导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程,用户执行命令等
注意:两者可相互转化
进程状态:
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,结束进程,父进程结束前,子进程不关闭
9、进程工具
9.1 系统管理工具:
进程的分类:
CPU-Bound:CPU 密集型,非交互
编译安装、大量计算等
IO-Bound:IO 密集型,交互
拷贝大文件等 DMA:直接内存访问
启动流程
就有5个流程
- 内核的引导。
- 运行 init。
- 系统初始化。
- 建立终端 。
- 用户登录系统
-
开机 开机先取blos自检 按照blos设置的启动设备来启动
操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
运行init
init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。
init 程序首先是需要读取配置文件 /etc/inittab。 所有的子进程的都是由init来衍生的
Linux系统有7个运行级别(runlevel):
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
- 运行级别2:多用户状态(没有NFS)
- 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登录后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
系统初始化
在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
建立终端
rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。
init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
用户登录系统
一般来说,用户的登录方式有三种:
主要是启动blos的流程 但linux的文件不止512个字节 太大 blos无法加载 所以先去一个小的linux系统 让他加载去加载大的linux系统 让init去开启所有的服务和文件这个512个字节可在挂载磁盘可看
tar -xf linux-4.19.275.tar.xz | |
sudo mv linux-4.19.275 /usr/src/linux-4.19.275 |
将当前内核的.config复制到新内核目录下
cp /boot/config-5.4.0-144-generic .config |
先进入图形化配置界面menuconfig
make menuconfig |
编译
make bzImage
make modules
make modules_install
make install
AWK的效率使用
1处理rdis集群时 ,用scp 复制过来的文件ip修
2大文件的数据修改
3打印文件的相关信息 和gerp 相比 下awk对文件的处理更细化
更适合shell编写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?