Linux程序与进程

目录

一、Linux程序与进程

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

2、程序和进程的区别

3、进程和线程的区别

二、Linux进程基础(生命周期)

1、进程生命周期

2、父子进程的关系

三、程序管理

1、课程目标

2、常见的软件包类型

3、安装方法

使用独立的rpm包安装

rpm包的命名方法

rpm命令使用方法

4、yum(dnf)安装

yum相关配置文件

yum源类型

配置本地yum源

5、yum命令语法

子命令(command)

命令选项

6.建立源库且配置本地源实验


一、Linux程序与进程

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

  • 程序:是一组指令及参数的集合,按照既定的逻辑控制计算机运行用来完成特定任务,是静态的;

  • 进程:是运行着的程序,是操作系统执行的基本单位,是程序运行的过程, 是动态的,是有生命周期及运行状态的。是操作系统分配内存、CPU时间片等资源的基本单位。

  • 线程:是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。

2、程序和进程的区别

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

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

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

3、进程和线程的区别

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

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

二、Linux进程基础(生命周期)

1、进程生命周期

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

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

2、父子进程的关系

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

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

三、程序管理

1、课程目标

  • 掌握Linux系统安装软件的方法

  • 掌握Linux系统软件管理命令

  • 熟练配置yum源

  • 掌握systemd管理机制

2、常见的软件包类型

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

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

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

3)二进制包:一般以.bin为后缀,直接被计算机执行安装。

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

3、安装方法

  • 使用独立的rpm包安装

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

  • rpm包的命名方法

版本:zip-0-11.el7.x86_64.rpm

  • 软件包名称:如 httpd-2.4.53-1.el9.x86_64.rpm(完整文件名)。

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

  • “httpd” 表明该软件包与 Apache HTTP 服务器相关,“httpd” 是 Apache HTTP 服务器在这些系统中的常见服务名。

  • “2.4.53” 代表软件版本号,表明这是 Apache HTTP 服务器的 2.4.53 版本,版本号能反映软件的功能特性及更新情况。

  • “1” 是软件包的发行号,用于标识同一版本软件包的不同发行阶段,有助于区分修复了某些问题或有轻微调整的同一版本软件包。

  • “el9” 指该软件包适用于基于 Red Hat Enterprise Linux 9(或其衍生版本)的系统,“el” 是 “Enterprise Linux” 的缩写。

  • “x86_64” 表示该软件包适用于 64 位的 x86 架构的计算机,表明软件可在对应的硬件平台上安装运行。

  • “.rpm” 是文件扩展名,代表这是一个 RPM 格式的软件包,用于在支持 RPM 的 Linux 系统中方便地进行软件的安装、升级、卸载等操作。

  • rpm命令使用方法

已安装软件包查看选项

-q:查看指定rpm包是否安装;rpm -q 软件名
​
-qa 【all】:查看系统中所有已安装的软件包;#rpm -qa [| grep 软件名]
​
[root@bogon ~]# rpm -qa | wc -l
1278
​
-qi 【infomation】:查看已安装软件包的开发信息:#rpm -qi 软件名
​
-ql  【list】:查看已安装软件包的安装路径及生成的文件;#rpm -ql 软件名
​
-qf 【find】:查看命令由哪个软件包安装;#which 命令字  rpm -qf 命令的绝对路径;常用于:系统中没有对应指令且不知道由哪个软件包安装生成
​
-qc:查看已安装软件的配置文件;rpm -qc 软件名;一般情况下,使用rpm安装的应用程序的配置文件都存储在/etc/[应用程序的名称]
​
-qd:查看已安装软件的帮助文档信息;rpm -qd 软件名

未安装软件包查看选项

-qpi:查看未安装的软件包开发信息;rpm -pqi 软件包名称(全格式)
​
-qpl:查看未安装软件包的安装路径及生成文件;
rpm -pql 软件包名称(全格式)

安装、升级、卸载选项

-i 【install】:安装软件包;rpm -ivh /path/软件包名称(全格式)
 # i安装单个 RPM 包
rpm -ivh package.rpm     # -v:显示详细信息,-h:显示安装进度(#号)
rpm -ivh /mnt/cdrom/Packages/httpd-2.4.53-1.el9.x86_64.rpm
​
-v:【verify】详细显示安装过程
​
-h:【human】人性化显示
​
-U:【update】升级软件包;rpm -Uvh 软件包名称
rpm -Uvh package.rpm  # 升级或安装软件包
​
-e:【exclude】卸载已安装软件包;
rpm -e package_name    # 删除已安装的软件包(需指定包名,非文件名)
rpm -e --nodeps package_name  # 强制删除(忽略依赖关系,谨慎使用!)
​
--nodeps:忽略依赖关系的进行卸载、升级或安装

特殊安装

#将所有相关软件包放到同一目录下
​
rpm -ivh *

4、yum(dnf)安装

可以自动解决依赖关系,前提是包里有相关依赖

  • yum相关配置文件

yum源配置文件

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

/etc/yum.repos.d

yum程序配置文件

yum程序运行时的运行配置

/etc/dnf/dnf.conf

缓存保存路径

/var/cache/dnf
  • yum源类型

本地yum源

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

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

网络yum源

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

http://域名/Path #不常用
​
https://域名/Path
​
ftp://域名/Path  #不常用

常见网络yum源

#网易yum源
​
#阿里云yum源
 tee /etc/yum.repos.d/alicloud.repo << 'EOF'
[alicloud-os]
name=Alibaba Cloud OS
baseurl=https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-rockylinux
 
[alicloud-appstream]
name=Alibaba Cloud AppStream
baseurl=https://mirrors.aliyun.com/rockylinux/8/AppStream/x86_64/os/
enabled=1
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-rockylinux
EOF
​
#epel源
​
yum -y install epel-release

常见开源镜像站

清华大学
​
https://mirrors.tuna.tsinghua.edu.cn/help/centos/
​
网易开源镜像站
​
http://mirrors.16com/
​
阿里云
​
  • 配置本地yum源
cd /etc/yum.repos.d
[root@localhost yum.repos.d]# rm -rf *
vim local.repo
[local]
name=local  #描述信息
baseurl=file:///mnt/AppStream  # 指定软件包及其元数据存储路径
enabled=1  #是否使用该源,0表示不使用,1表示使用
gpgcheck=0  #(一般使用不验证的方式) [gpgcheck=1]
gpgkey=keyPath

5、yum命令语法

yum [options] command [package ...]
  • 子命令(command)
install [软件包名] [--downloadonly]
#安装【只下载】
remove [软件包名]
#卸载
list
#查看yum源中的软件包列表
update [软件包名]
#更新所有软件包
yum clean all
#清空元数据缓存
yum makecache 
#生成元数据缓存
  • 命令选项
-y:非交互

*交互式安装:yum install 软件名

6.建立源库且配置本地源实验

[root@bogon ~]# mount /dev/sr0 /mnt/
mount: /mnt: WARNING: source write-protected, mounted read-only.
​
[root@bogon ~]# cd /mnt/AppStream
[root@bogon AppStream]# ls
Packages  repodata
​
[root@bogon AppStream]# cd /etc/yum.repos.d/
[root@bogon yum.repos.d]# ls
rocky-addons.repo  rocky-devel.repo  rocky-extras.repo  rocky.repo
​
[root@bogon yum.repos.d]# mkdir backup
​
[root@bogon yum.repos.d]# mv rock* backup/
[root@bogon yum.repos.d]# ls
backup
​
[root@bogon yum.repos.d]# vim local.repo
[local]
name=local
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0
​
[root@bogon yum.repos.d]# vim local.repo
[root@bogon yum.repos.d]# yum clean all
25 个文件已删除
[root@bogon yum.repos.d]# yum makecache
local                                            57 MB/s | 7.9 MB     00:00    
上次元数据过期检查:0:00:03 前,执行于 2025年05月27日 星期二 20时57分22秒。
元数据缓存已建立。
[root@bogon yum.repos.d]# yum search httpd
上次元数据过期检查:0:00:28 前,执行于 2025年05月27日 星期二 20时57分22秒。
============================= 名称 精准匹配:httpd =============================
httpd.x86_64 : Apache HTTP Server
=========================== 名称 和 概况 匹配:httpd ===========================
httpd-core.x86_64 : httpd minimal core
keycloak-httpd-client-install.noarch : Tools to configure Apache HTTPD as
                                     : Keycloak client
python3-keycloak-httpd-client-install.noarch : Tools to configure Apache HTTPD
                                             : as Keycloak client
rocky-logos-httpd.noarch : Rocky Linux related icons and pictures used by httpd
=============================== 名称 匹配:httpd ===============================
httpd-devel.x86_64 : Development interfaces for the Apache HTTP Server
httpd-filesystem.noarch : The basic directory layout for the Apache HTTP Server
httpd-manual.noarch : Documentation for the Apache HTTP Server
httpd-tools.x86_64 : Tools for use with the Apache HTTP Server
libmicrohttpd.x86_64 : Lightweight library for embedding a webserver in
                     : applications
libmicrohttpd.i686 : Lightweight library for embedding a webserver in
                   : applications
=============================== 概况 匹配:httpd ===============================
mod_auth_mellon.x86_64 : A SAML 2.0 authentication module for the Apache Httpd
                       : Server
mod_dav_svn.x86_64 : Apache httpd module for Subversion server
mod_proxy_cluster.x86_64 : JBoss mod_proxy_cluster for Apache httpd
​
[root@bogon yum.repos.d]# cd /mnt/AppStream
[root@bogon AppStream]# ls
Packages  repodata
​
报错实验:
[root@bogon AppStream]# cd /etc/yum.repos.d/
[root@bogon yum.repos.d]# vim local.repo
[local]
name=local
baseurl=file:///mnt/AppStream1
enabled=1
gpgcheck=0
[root@bogon yum.repos.d]# yum clean all
9 个文件已删除
[root@bogon yum.repos.d]# yum makecache
local                                           0.0  B/s |   0  B     00:00    
Errors during downloading metadata for repository 'local':
  - Curl error (37): Couldn't read a file:// file for file:///mnt/AppStream1/repodata/repomd.xml [Couldn't open file /mnt/AppStream1/repodata/repomd.xml]
错误:为仓库 'local' 下载元数据失败 : Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were triedrep
错误原因:配置时要指向repomd,当路径出现错误时就会报错。
​

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值