从零开始的云计算生活——第十一天,知识延续,程序管理。

news2025/6/3 12:33:31

一·故事背景

今日整体内容是第十天的剩余部分再加上程序管理的开头部分,详细可以回到第十天看新增加内容,现在开始讲解新内容。

二·Linux程序与进程

1·程序,进程,线程的概念

  • 程序:‌是一段静态的代码,它是应用软件执行的蓝本。程序通常保存在磁盘上,由一系列有序指令组成,用于指导计算机执行特定的任务。程序本身不包含任何动态执行的概念,它是静态的实体‌。

  • 进程:是程序的一次动态执行过程。当一个程序被加载到内存并开始执行时,就形成了一个进程。进程是操作系统进行资源分配和调度的基本单位,具有独立的内存空间和系统资源。进程从创建、执行到消亡,对应了从代码加载、执行到执行完毕的一个完整过程‌。

  • 线程:是进程中的一个执行单元,是操作系统能够进行运算调度的最小单位。一个进程可以包含多个线程,这些线程共享进程的内存空间和其他资源,但每个线程都有独立的执行路径和程序计数器。线程自己不拥有独立的存储空间,而是与同一进程的其他线程共享数据‌。

2·程序和进程的区别

  • 程序是静态的,它只是一组指令的集合,不具有任何的运行意义。而进程是程序运行的动态过程;

  • 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程;

  • 进程还具有并发性和交往性,而程序却是封闭的。

3·进程和线程的区别

  • 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发拥有多个线程,而一个线程同时只能被一个进程所拥有;

  • 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。

三·Linux进程基础

1·进程生命周期

  • 父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID(PID),PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程。

  • 所有进程都是第一个系统进程的后代:在centos6中,第一个系统进程是init,而在centos7中,第一个系统进程是systemd。

2·父子进程的关系

  • 子进程由父进程产生,在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。

  • 运行过程:子进程运行时父进程休眠。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境后,剩余释放不掉的资源称之为僵尸进程。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

四·程序管理

1·常见的软件包类型

①rpm包:

.rpm为后缀,红帽系列操作系统(RedHat,CentOS,OpenSUSE)主要的软件包封装格式,已经做好默认设置,如安装路径,配置文件存放路径,需要手动的解决依赖关系。(相关命令:rpm,yum,dnf)

②deb包:

.deb为后缀,debian系列操作系统(debian,Ubuntu,kali)主要的软件包封装格式,已经做好默认设置,如安装路径,配置文件存放路径等,需要手动的解决依赖关系。(相关命令:dpkg,apt[-get])

依赖关系:安装软件包所需的基础环境

③二进制包:

一般以.bin为后缀,直接被计算机执行安装。

④源码包:

一般C语言(高级语言中最底层的语言,一般结合汇编进行驱动编写)编写,安装前需要编译为二进制包;配置【如,安装路径,配置文件路径,运行用户,运行组,功能模块】--->编译--->安装;文件比较集中,便于后期进行维护与管理。

2·安装方法

  • 使用独立的rpm包安装

需要下载对应的rpm包,一般在centos系统镜像中存在大量的rpm包

  • rpm包的命名方法

zip-0-11.el7.x86_64.rpm

软件名.版本号.安装平台.安装架构平台的位数(32位,x86或者64位,x86_64).rpm

  • rpm命令使用方法

已安装软件包查看选项
选项描述用法
-q查看指定rpm包是否安装rpm -q 软件名
-qa查看系统中所有已安装的软件包rpm -qa [| grep 软件名]
-qi查看已安装软件包的开发信息rpm -qi 软件名
-ql查看已安装软件包的安装路径及生成的文件rpm -ql 软件名
-qf 查看命令由哪个软件包安装        rpm -qf 命令的绝对路径
-qc查看已安装软件的配置文件rpm -qc 软件名
-qd查看已安装软件的帮助文档信息rpm -qd 软件名
未安装软件包查看选项
选项描述用法
-qpi查看未安装的软件包开发信息rpm -pqi 软件包名称(全格式)
-qpl查看未安装软件包的安装路径及生成文件rpm -pql 软件包名称(全格式)
 安装、升级、卸载选项
选项描述用法
-i安装软件包rpm -ivh /path/软件包名称(全格式)
-v详细显示安装过程/
-h人性化显示/
-U升级软件包rpm -Uvh 软件包名称
-e卸载已安装软件包;      /
--nodeps忽略依赖关系的进行卸载、升级或安装/
特殊安装
选项描述用法
/将所有相关软件包放到同一目录下rpm -ivh *

3·yum(dnf)安装

可以自动解决依赖关系

①yum相关配置文件

a.yum源配置文件

指定yum程序运行时查找软件包的存储路径

b.yum程序配置文件

yum程序运行时的运行配置

c.缓存保存路径

②yum源类型

a.本地yum源

利用本地存在的软件包路径

file://localPath(绝对路径)【路径下要包含“repodata(包含rpm包的元数据)”目录】

b.网络yum源

利用网络存储的软件包路径

http://域名/Path #不常用

https://域名/Path

ftp://域名/Path  #不常用

c.常见开源镜像站
1.阿里云镜像源:

阿里云提供了CentOS 7的归档镜像源,适合继续使用CentOS 7的用户。可以通过以下命令下载并替换原有的YUM源:

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-7.repo
yum clean all
yum makecache

2.清华大学开源镜像站

清华大学开源软件镜像站也提供了CentOS的归档镜像源,可以通过以下命令下载并替换原有的YUM源:

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo
yum clean all
yum makecache

3.中科大镜像站

中国科学技术大学也提供了CentOS的归档镜像源,可以通过以下命令下载并替换原有的YUM源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ustc.edu.cn/repo/Centos-7.repo
yum clean all
yum makecache

d.配置本地yum源

4·yum命令语法

yum [options] command [package ...]

命令描述
install [软件包名] [--downloadonly]安装【只下载】
remove [软件包名]卸载
list查看yum源中的软件包列表
update [软件包名]更新所有软件包
yum clean all清空元数据缓存
yum makecache 生成元数据缓存

5·源码包(编译)安装

需要依赖gcc和make环境

配置:cd 源码包的解压路径;./configure --prefix=安装路径(/usr/local/nginx)

编译:make

安装:make install

先在github上下载nginx-1.28.0.tar软件包,下载完成后拖动到虚拟机(Rocky9)中

然后进行解压

解压后进入文件夹内

可以查看帮助

此时提醒,没安装编译器

使用命令下载gcc make环境(若无法成功,将昨天放在yum.repos.d内的4个文件拿出来即可)

然后回到原地址运行命令

此时报错,缺少pcre环境,进行下载

再次运行后依然报错,说明此时prec版本不对,再次尝试pcre-utils,pcre-devel,若都不是需要网上查找

此时再次报警,需要安装zlib,再次下载zlib-devel(大概率)

此时输出结果为

在当前目录输入make进行编译

输入make instal进行安装

最后使用软连接将nginx命令放到sbin目录下(命令优化)此时就有了nginx命令

五·Linux操作系统启动流程详解

1·概述

    Linux启动流程是从按下电源键到用户登录的完整过程,分为传统BIOS+MBR和现代UEFI+GPT两种模式。主流系统(如CentOS 7+/Ubuntu 18.04+)通常使用 UEFI + GRUB2 + systemd 组合。

2·启动流程核心阶段

a.电源与固件阶段
  • UEFI/BIOS初始化

    • 硬件自检(POST, Power-On Self-Test)

    • UEFI特点:图形化界面、支持GPT分区、独立于OS的Shell环境

    • 定位启动设备:读取NVRAM中的启动项(efibootmgr命令可管理)

b.引导加载程序(Bootloader)
  • GRUB2 核心作用

    • 配置文件路径:/boot/grub2/grub.cfg(由grub2-mkconfig生成)

    • 关键配置参数:

set root=(hd0,gpt1)  # 指定/boot所在分区


linux /vmlinuz-5.4.0 root=/dev/sda2 ro  # 内核路径及挂载参数


initrd /initramfs-5.4.0.img             # 初始化内存文件系统

用户交互

  • e 临时编辑启动参数(如单用户模式 systemd.unit=rescue.target

  • c 进入GRUB命令行

c.内核初始化
  • 内核解压与初始化

    • 加载vmlinuz:压缩的内核镜像

    • initramfs 作用:

      • 包含根文件系统挂载前的驱动(如LVM、RAID)

      • 提供dracut工具集(可通过dmesg | grep initramfs查看日志)

    • 挂载根文件系统(/)为只读模式

d.systemd 初始化进程
  • 首个用户态进程

    • PID=1,替代传统init

    • 核心任务:

      1. 解析/etc/systemd/system/default.target(默认运行级别)

      2. 并行启动服务单元(Unit)

      3. 激活sysinit.target(系统初始化)、basic.target(基础服务)

关键操作命令

systemctl get-default         # 查看默认target
systemctl set-default multi-user.target  # 设置默认为命令行模式
journalctl -b                # 查看本次启动日志

六·systemd管理机制

init进程是所有进程的父进程,systemd实际上是一种管理init的软件。只能管理rpm安装的

units存储路径

/usr/lib/systemd/system

基于unit概念实现,常见的unit类型

单元类型扩展名说明
Service.service描述一个系统服务
Target.target描述一组systemd的单元
Socket.socket描述一个进程间通信的套接字
Device.device描述一个内核识别的设备文件
Mount.mount描述一个文件系统的挂载点
Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中文件或目录
Timer.timer描述一个定时器(用于实现类似cron的调度任务)
Snapshot.snapshot用于保存一个systemd的状态
Scope.scope使用systemd的总线接口以编程的方式创建外部进程
Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程

1·运行级别

  • 运行级别与target对应关系
运行级别Systemd的target说明
0poweroff.target关机状态,使用该级别时将会关闭主机
1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护
2multi-user.target用户定义/域特定运行级别。默认等同于3
3multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别
4multi-user.target用户定义/域特定运行级别。默认等同于3
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.target重新启动,使用该级别时将会重启主机

查看运行级别

runlevel

N|运行级别数字   当前运行级别数字

N表示none,上一个登陆级别。

切换运行级别

init  运行级别数字

查看默认运行级别

systemctl get-default

设置默认运行级别

systemctl set-default  运行级别target

 

2·systemctl命令的使用

systemctl  服务控制类型    服务名称[.service]

选项描述结果
start启动/
stop停止/
restart重启会停止服务
reload重载不停止服务,加载配置文件
status查看状态

Active: active (running)

Active: inactive (dead)

is-enabled查看是否开机自启动

disabled关闭开机自启动

enabled开启开机自启动

--now配合enable与disable使用;在进行开机自启或不自启的同时进行打开或关闭指定服务

-t         指定unit类型

Unit Commands

list-units

列出所有unit,一般与-t结合

服务排错命令

七·总结

这只是程序管理的开始,后续会继续补充剩余内容,本次需要记忆的命令是yum相关的命令还有rpm一系列的命令,以后会经常使用。


今日补充了后续内容,主要是源码包的安装,操作流程及其一些问题的发生,最后是systemctl命令的使用,命令要熟记。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2393599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Dify学习笔记】:Dify离线安装插件教程

Dify离线安装插件教程 1.本地下载插件 插件点击详情页面,安装右边的下载按钮,下载到本地 2.dify插件打包工具 dify-plugin-repackaging 下载后,进入到工具所在目录dify-plugin-repackaging/ git clone https://github.com/junjiem/dif…

基于c++11重构的muduo核心库项目梳理

代码梳理 Thread创建与分配 event_channel回调函数 在muduo中,有三种类型的channel,包括 事件channel(event_channel) 这个就是普通的IO事件channel,当监听到Tcp连接有读、写、关闭、错误事件的时候,event_channel活跃accept_c…

7:OpenCV—图像形态学处理

OpenCV的形态学操作(对象图像进行处理) 包括图像的**腐蚀**、**膨胀**、**开**、**闭**、**形态学梯度、顶帽、黑帽、分支主题、结构元素**等操作。 1.1、膨胀 用33的核去扫描二值图像,当核与图像中的前景像素(值为1的像素)有**交集**时&…

远控安全金标准,ToDesk、向日葵、网易UU安全功能盘点,是否能攻破防线

目录 一、引言二、设备授权管理2.1、二次验证2.2、访问权限设置2.3、黑/白名单功能 三、远程连接与数据传输3.1、身份认证强度3.2、数据传输加密能力 四、隐私安全功能4.1、隐私屏/黑屏功能对比4.2、风险提醒消息 五、主动防诈保护5.1、24小时防诈等待期5.2、金融类窗口识别与隐…

终端没有5G图标-不支持特定NSA频段组合

某样机没有5G图标&#xff0c;而对比机有5G图标。 step1&#xff1a; 对比机工作在5G NSA上 从android日志可以看到终端工作在b28n78的NSA双载波下 05-06 14:38:51.993097 1582 1661 D RILJ : [UNSL]< UNSOL_PHYSICAL_CHANNEL_CONFIG [ { mConnectionStatusPrimaryS…

第42节:模型优化与部署:Web服务部署(Flask, FastAPI)

1. 引言 在现代人工智能和机器学习应用中,模型的开发只是整个流程的一部分。 将训练好的模型有效地部署为可访问的Web服务,使其能够处理实际请求并返回预测结果,是模型价值实现的关键环节。Python生态系统提供了多种轻量级Web框架,其中Flask和FastAPI是目前最受欢迎的选择…

pikachu通关教程-RCE

目录 RCE(remote command/code execute)概述: exec "ping" 管道符 乱码问题 RCE(remote command/code execute)概述: RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统 分为远程代码和远程命令两种.当…

MyBatisPlus--快速入门

MyBatisPlus介绍 从名字中就可以感觉到MybatisPlus与MyBatis之间的渊源&#xff0c;而MyBatis是一个非常流行的持久层框架&#xff0c;主要来做数据库的增删改查&#xff0c;而MyBatisPlus这种命名方式让人不得不往MyBatis的升级版去联想&#xff0c;事实也确实如此&#xff0…

鸿蒙 HarmonyOS - SideBarContainer 组件自学指南

在日常开发中&#xff0c;如果你有类似「左侧导航 右侧内容」的布局需求&#xff0c;比如后台管理界面、文件管理器、设置页等&#xff0c;​​SideBarContainer​​ 是非常值得掌握的组件。它自带侧边栏和主内容区的分离机制&#xff0c;还支持折叠、拖拽、控制按钮和多种显示…

C++ list基础概念、list初始化、list赋值操作、list大小操作、list数据插入

list基础概念&#xff1a;list中的每一部分是一个Node&#xff0c;由三部分组成&#xff1a;val、next、prev&#xff08;指向上一个节点的指针&#xff09; list初始化的代码&#xff0c;见下 #include<iostream> #include<list>using namespace std;void printL…

【Linux 学习计划】-- 命令行参数 | 环境变量

目录 命令行参数 环境变量 环境变量的本质是什么&#xff1f; 相关配置文件 修改环境变量的相关操作 代码获取env —— environ 内建命令 结语 命令行参数 试想一下&#xff0c;我们的main函数&#xff0c;也是一个函数&#xff0c;那么我们的main函数有没有参数呢&am…

服务器Docker容器创建与VScode远程连接SSH使用

一、拉取容器 1、win r 输入cmd打开终端命令行 2、终端输入 ping 192.168.xx.xxx 查看是否连接到服务器。如输出显示“字节 时间 TTL”等如下界面&#xff0c;则连接成功。否则输出“请求超时” 如果不能连接&#xff0c;则需要修改设备的IP&#xff0c;需要在设置-网络和In…

LiveQing 视频点播流媒体 RTMP 推流服务功能:搭建 RTMP 视频流媒体服务详细指南

LiveQing视频点播流媒体RTMP推流服务功能&#xff1a;搭建RTMP视频流媒体服务详细指南 一、流媒体服务搭建二、推流工具准备三、创建鉴权直播间四、获取推流地址五、配置OBS推流六、推流及播放七、获取播放地址7.1 页面查看视频源地址7.2 接口查询 八、相关问题解决8.1 大疆无人…

LeetCode 高频 SQL 50 题(基础版)之 【连接】部分 · 下

前五道题&#xff1a;LeetCode 高频 SQL 50 题&#xff08;基础版&#xff09;之 【连接】部分 上 题目&#xff1a;577. 员工奖金 题解&#xff1a; select r.name,b.bonus from Employee r left join Bonus b on r.empIdb.empId where b.bonus <1000 or b.bonus is nul…

【正点原子STM32】RS485串行通信标准(串口基础协议 和 MODBUS协议、总线连接、通信电路、通信波形图、RS485相关HAL库驱动、RS485配置步骤、)

一、RS485介绍 二、RS485相关HAL库驱动介绍 三、RS485配置步骤 四、编程实战 五、总结 串口、 UART、TTL、RS232、RS422、RS485关系 串口、UART、TTL、RS232、RS422和RS485之间的关系可以如此理解&#xff1a; 串口&#xff1a;是一个广义术语&#xff0c;通常指的是采用串行通…

在力扣刷题中触摸算法的温度

在代码的世界里&#xff0c;每一道力扣题目都是一扇通往未知的门。当我推开这些门&#xff0c;与内置求和函数、二进制位运算、辗转相减思想以及链表结构相遇时&#xff0c;才真正触摸到算法的温度 —— 那是一种理性与智慧交织的炽热&#xff0c;也是思维不断淬炼的滚烫。​ 最…

外部访问可视化监控 Grafana (Windows版本)

Grafana 是一款通用&#xff0c;美观的&#xff0c;强大的可视化监控指标的展示工具。可以将不同的数据源数据以图形化的方式展示。它支持多种数据源&#xff0c;如 Prometheus 等&#xff0c;可以满足不同的需求。也可以通过插件和 API 进行扩展满足各种需求&#xff0c;…

通用的防御框架,用于抵御(多模态)大型语言模型的越狱攻击

大家读完觉得有帮助记得关注&#xff01;&#xff01;&#xff01; 摘要 尽管&#xff08;多模态&#xff09;大型语言模型&#xff08;LLMs&#xff09;因其卓越的能力而受到广泛关注&#xff0c;但它们仍然容易受到越狱攻击。已经提出了各种防御方法来防御越狱攻击&#xff…

新能源汽车电控系统的精准守护者PKDV5355高压差分探头

在新能源汽车的"心脏"——电控系统中&#xff0c;每一次电流的精准切换都关乎车辆的性能与安全。PRBTEK PKDV5355高压差分探头就像一位经验丰富的"汽车医生"&#xff0c;帮助工程师们精准捕捉IGBT模块的每一次"心跳"&#xff0c;确保电驱系统健康…

C# 导出word 插入公式问题

最近遇到了一个问题&#xff0c;下载一个文档时需要下载word可编辑的公式。找了很久终于找到了一种解决办法。下面是以C#代码来实现在Word中插入公式的功能。 目录 一、引入dll程序集文件1、通过 NuGet 引入dll&#xff08;2种方法&#xff09;的方法&#xff1a;2、手动添加d…