一、Linux程序与进程
1、程序,进程,线程的概念
-
程序:是一组指令及参数的集合,按照既定的逻辑控制计算机运行用来完成特定任务,是静态的;
-
进程:是运行着的程序,是操作系统执行的基本单位,是程序运行的过程, 是动态的,是有生命周期及运行状态的。是操作系统分配内存、CPU时间片等资源的基本单位。
-
线程:是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
2、程序和进程的区别
-
程序是静态的,它只是一组指令的集合,不具有任何的运行意义。而进程是程序运行的动态过程;
-
进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程;
-
进程还具有并发性和交往性,而程序却是封闭的。
3、进程和线程的区别
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发拥有多个线程,而一个线程同时只能被一个进程所拥有;线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。
二、Linux进程基础(生命周期)
1、进程生命周期
-
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID(PID),PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程。
-
所有进程都是第一个系统进程的后代:在centos6中,第一个系统进程是init,而在centos7中,第一个系统进程是systemd。
2、父子进程的关系
-
子进程由父进程产生,在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。
本地yum源
利用本地存在的软件包路径
file://localPath(绝对路径)【路径下要包含“repodata(包含rpm包的元数据)”目录】
网络yum源利用网络存储的软件包路径http://域名/Path #不常用https://域名/Pathftp://域名/Path #不常用
5、yum命令语法
子命令(command)
交互式安装:yum install 软件名
6、源码包(编译)安装
需要依赖gcc和make环境配置:cd 源码包的解压路径;./configure --prefix=安装路径(/usr/local/nginx)编译:make安装:make install
-
案例
nginx编译安装
7、二进制安装
只需要运行bin文件
jdk-6u14-linux-x64.bin./jdk-6u14-linux-x64.bin
四、Linux操作系统启动流程详解
Linux启动流程是从按下电源键到用户登录的完整过程,分为传统BIOS+MBR和现代UEFI+GPT两种模式。主流系统(如CentOS 7+/Ubuntu 18.04+)通常使用 UEFI + GRUB2 + systemd 组合
2、启动流程核心阶段
1. 电源与固件阶段
UEFI/BIOS初始化
-
硬件自检(POST, Power-On Self-Test)
-
UEFI特点:图形化界面、支持GPT分区、独立于OS的Shell环境
-
定位启动设备:读取NVRAM中的启动项(
efibootmgr
命令可管理)
2. 引导加载程序(Bootloader)
GRUB2 核心作用
配置文件路径:/boot/grub2/grub.cfg
(由grub2-mkconfig
生成
3. 内核初始化
内核解压与初始化
4. systemd 初始化进程
-
首个用户态进程
5. 用户登录阶段
终端登录
-
getty
服务生成终端(/etc/systemd/system/getty.target.wants/
) -
调用
login
验证用户身份
图形化登录
-
Display Manager(如GDM、LightDM)启动X/Wayland会话
3、故障排查与调试技巧
1. 常见启动问题
故障现象 | 可能原因 | 解决方法 |
---|---|---|
GRUB Rescue> 提示符 | 引导分区损坏/配置丢失 | 使用Live CD重建grub |
Kernel panic | 驱动缺失/根文件系统错误 | 检查initramfs是否包含所需驱动 |
systemd启动卡死 | 服务依赖死锁 | 添加systemd.unit=emergency.target 内核参数 |
文件系统只读 | fsck未通过或磁盘错误 | 手动运行fsck /dev/sda1 |
2. 救援模式操作
在GRUB界面添加启动参数:
systemd.unit=rescue.target # 单用户模式(需root密码)
systemd.unit=emergency.target # 紧急模式(只挂载根文件系统)重新挂载根文件系统为读写:
mount -o remount,rw /
五、systemd管理机制
init进程是所有进程的父进程,systemd实际上是一种管理init的软件。只能管理rpm安装的
units存储路径/usr/lib/systemd/system