Linux程序管理

目录

一、Linux程序与进程

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

2、程序和进程的区别

3、进程和线程的区别

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

1、进程生命周期

2、父子进程的关系

三、程序管理

1、常见的软件类型

2、安装方法

3、yum(dnf)安装

3.1、yum相关配置文件

3.2、yum源类型

配置本地yum源

4、yum命令语法

5、源码包(编译)安装

四、Linux操作系统启动流程详解

1、概述

2、启动流程核心阶段

五、systemd管理机制

运行级别


一、Linux程序与进程

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

名称概念
程序是一组指令及参数的集合,按照既定的逻辑控制计算机运行用来完成特定任务,是静态的。
进程是运行着的程序,是操作系统执行的基本单位,是程序运行的过程, 是动态的,是有生命周期及运行状态的。是操作系统分配内存、CPU时间片等资源的基本单位。
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。

2、程序和进程的区别

程序是静态的,它只是一组指令的集合,不具有任何的运行意义。而进程是程序运行的动态过程
进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
进程还具有并发性和交往性,而程序却是封闭的

3、进程和线程的区别

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

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

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

1、进程生命周期

①.父进程复制自己的地址空间创建一个新的(子)进程结构。每个新进程分配一个唯一的进程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、安装方法

①.使用独立的rmp包安装: 需要下载对应的rpm包,一般在centos系统镜像中存在大量的rpm包

②.rpm包命名方法

zip-0-11.el7.x86_64.rpm

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

③.rpm命令使用方法

已安装软件包查看选项

选项作用
-q查看指定rpm包是否安装;rpm -q 软件名
-qa(all)查看系统中所有已安装的软件包;rpm -qa [
-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/软件包名称(全格式)
-v(verify)详细显示安装过程
-h(human)人性化显示
-u(update)升级软件包;rpm -Uvh 软件包名称
-e(exclude)卸载已安装软件包
--nodeps忽略依赖关系的进行卸载、升级或安装

特殊安装

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

3、yum(dnf)安装

可自动解决依赖文件

3.1、yum相关配置文件

类型描述语法
yum源配置文件指定yum程序运行时查找软件包的存储路径/etc/yum.repos.d
yum程序配置文件yum程序运行时的运行配置/etc/dnf/dnf.conf
缓存保存路径/var/cache/dnf

3.2、yum源类型

类型描述语法
本地yum源利用本地存在的软件包路径file://localPath(绝对路径)路径下要包含“repodata(包含rpm包的元数据)”目录
网络yum源利用网络存储的软件包路径1.http://域名/Path (不常用)2.https://域名/Path 3.ftp://域名/Path (不常用)
常见网络yum源1.网易yum源2.阿里云yum源3.epel源

配置本地yum源

①mount  /dev/sr0 /mnt
②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
 
 
:wq


⑤yum clean all

⑥yum makecache 

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

nginx编译安装

1.tar xf  nginx-1.28.0.tar.gz
​
2.cd nginx-1.28.0
​
3.   ./configure --prefix=/usr/local/nginx
发现依赖缺失
解决依赖
4.yum install -y pcre-devel或者untils  
5.yum install -y zlib-devel
配置完成后
6.   ./configure --prefix=/usr/local/nginx
在源码包下生成Makefile文件
7.make   编译
8.make  install  安装
​
命令合并
./configure --prefix=/usr/local/nginx18  && make  && make install
9.验证
cd /usr/local/nginx1.12
​
10.命令优化
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

四、Linux操作系统启动流程详解

1、概述

Linux启动流程是从按下电源键到用户登录的完整过程,分为传统BIOS+MBR和现代UEFI+GPT两种模式。

主流系统(如CentOS 7+/Ubuntu 18.04+)通常使用 UEFI + GRUB2 + systemd组合。

2、启动流程核心阶段

阶段描述作用
电源与固件阶段UEFI/BIOS初始化1.硬件自检(POST, Power-On Self-Test)2.UEFI特点:图形化界面、支持GPT分区、独立于OS的Shell环境3.定位启动设备:读取NVRAM中的启动项(efibootmgr命令可管理)
引导加载程序1.GRUB2 核心作用2.用户交互配置文件路径:/boot/grub2/grub.cfg(由grub2-mkconfig生成)
内核初始化内核解压与初始化1.加载vmlinuz:压缩的内核镜像2.initramfs 作用:包含根文件系统挂载前的驱动(如LVM、RAID);提供dracut工具集(可通过dmesg |grep initramfs查看日志)3.挂载根文件系统(/)为只读模式
初始化进程首个用户态进程1.PID=1,替代传统init2.核心任务:①.解析/etc/systemd/system/default.target(默认运行级别)②.并行启动服务单元(Unit)③.激活sysinit.target(系统初始化)、basic.target(基础服务)
用户登录阶段1.终端登录2.图形化登录1.getty 服务生成终端(/etc/systemd/system/getty.target.wants/ ;调用login验证用户身份2.Display Manager(如GDM、LightDM)启动X/Wayland会话

五、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的一组通过层次组织的管理系统进程

运行级别

运行级别与target对应关系

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值