Linux下的进程管理

Linux下的进程管理 一理解进程和线程1.1什么是进程1.进程是程序在正运行的实体2.核心特点-独立性各进程内存相互隔离默认不能直接互相访问。-动态性有完整生命周期创建 → 就绪 → 运行 → 阻塞 → 终止。-并发性单核CPU通过快速切换时间片让多个进程“同时”运行。-关联性进程可以创建子进程形成父子进程关系。1.2什么是线程1.线程是进程内部的执行单元也是操作系统CPU 调度的最小单位。一个进程里可以包含多个线程所有线程共享当前进程的资源。2.核心特点-轻型实体自身资源极少主要靠进程提供资源。-并发执行同一进程内多个线程可以交替使用 CPU实现并行工作。-共享资源全局变量、堆内存、打开的文件全部共享。-调度基本单位CPU 真正调度、切换的是线程。二进程状态状态码 状态名称 说明R 运行/就绪态 正在占用CPU执行或在就绪队列等待调度S 可中断睡眠 最常见状态。等待事件可被信号唤醒D 不可中断睡眠 通常为磁盘I/O阻塞无法被信号中断 命令无效Z 僵尸进程 子进程已退出父进程未回收其退出信息PCB残留T 暂停态 收到暂停信号如进程停止执行t 跟踪暂停 被调试程序打断gdb调试场景X 死亡态 进程彻底消亡资源完全回收几乎观测不到三进程查看的方法3.1在图形中查看进程第一种方式#gnome-system-monitor 打开图形中的进程管理工具第二种方式3.2常用进程查看命令的使用#ps进程查看#ps 命令的三种执行风格 unix bsd GNU#a 与终端相关的进程#x 与终端无关相关的进程#u 用户信息归类的查看方式#f 进程层级关系#o 显示指定参数#-e 显示所有进程#-f 显示信息的完整格式#-H 显示进程的层级结构#-o 显示指定参数ps ax显示信息如下#PID 进程id#TTY 进程用到的终端#STAT 进程状态#TIME 进程占用cpu时长#COMMAND 进程名称ps aux 显示信息如下#USER 进程所有人#PID 进程id#%CPU 进程使用cpu的用量#%MEM 进程所用到的内存用量#VSZ 进程使用的虚拟内存大小#RSS 进程常驻内存中的数据大小#TTY 进程用到的终端#STAT 进程状态#START 进程运行时长#TIME 进程占用cpu时长#COMMAND 进程名称#pgrep进程查看#-u uid 显示指定用户进程#-U user 显示指定用户进程#-t tty 显示指定终端进程#-l 显示进程名称#-a 显示进程的完整名称#-P 进程的子进程#pidof进程查看查看进程的pid#top进程查看##动态进程查看#-d 指定刷新频率#-b 以批次方式显示#-n 指定显示的批次数量top内部指令#P cpu排序#M 内存排序#T 累计占用cpu时间排序#1 关闭/开启uptime信息#t 关闭/开启cputasks#s 指定刷新频率#k 操作进程#u 查看指定用户进程四进程的前后台调用ctrlz ##把占用shell的进程打入后台挂起bg ##把后台挂起的进程运行起来fg ##把后台进程调回前台命令 ##运行进程在后台jobs ##查看当前shell中在后台的所有工作五进程的优先级5.1进程优先级定义进程优先级是操作系统调度器用来决定CPU资源分配顺序的核心依据优先级越高的进程越容易获得CPU时间片调度器会优先为它分配资源。5.1优先级种类Linux 中进程优先级分为内核态优先级和用户态优先级两大体系日常运维主要接触 Nice 优先级内核层面还有实时优先级两类调度策略、取值、作用完全不同。一、1. 普通进程优先级CFS 调度默认进程Linux 桌面、服务器绝大多数进程都属于此类由完全公平调度器 CFS 管理。包含两个关联参数PRI内核优先级、NINice 值用户可改1PRI 内核优先级- 定义内核实际调度使用的优先级编号系统内核维护用户不能直接修改。- 规则数值越小优先级越高。- 取值默认范围 0 ~ 139 。- 计算 新PRI 原始PRI NI 会随 Nice 值动态变化。2NI 友好值Nice 值用户优先级最常用、可手动调整的优先级用来控制进程“谦让度”。- 取值范围-20 ~ 19- -20 最高优先级- 0 系统默认优先级- 19 最低优先级- 权限规则- 普通用户仅能将 NI 调大0~19降低优先级- root 用户可设置全部区间-20 ~ 19- 相关命令# 启动进程时指定优先级nice -n 数值 命令# 修改正在运行进程的优先级renice -n 数值 -p PID二、2. 实时进程优先级实时调度高优先级进程针对对响应速度要求极高的程序硬件驱动、工业控制、音视频采集等由实时调度策略管理。特点实时进程优先级 所有普通进程只要实时进程就绪会优先抢占 CPU。分类 取值分为两种实时调度策略优先级取值统一- 优先级范围1 ~ 99- 规则数值越大优先级越高和普通进程相反5.3进程优先级的调整方法基础概念Linux 进程优先级决定 CPU 调度顺序系统分为普通进程和实时进程两大类日常运维主要操作普通进程的 Nice 值。1. PRI内核实际调度优先级系统自动计算用户无法直接修改数值越小优先级越高。2. NINice 值用户可手动调整的优先级参数俗称友好值。- 取值范围 -20 ~ 19- 规则数值越小优先级越高- 默认值 03. 优先级关系 PRI(新) PRI(原始) NI权限限制- 普通用户仅能将 Nice 值调大 0 ~ 19 只能降低进程优先级无法抢占系统资源。- root 超级用户可设置完整区间 -20 ~ 19 能提升/降低任意进程优先级。优先级范围值#范围 0--139#内核自控优先级范围0-99#用户可控优先级100-139nice -n -5 cat ##指定优先级打开进程renice -n -5 43331 ##更改优先级进程状态字符详解S #sleeping #优先级高s #顶级进程T #stopN #优先级底R #running #运行在前台六进程信号的使用6.1进程信号的定义信号是 Linux 系统中进程间异步通信的一种方式本质是内核向进程发送的简短消息用于通知进程发生了某个事件。信号属于软中断进程收到信号后会按照预设方式做出响应终止、暂停、重启、忽略、执行自定义操作等。信号来源内核、其他进程、终端操作、硬件异常。6.2用户可控进程信号| 信号名称 | 信号编号 | 默认行为 | 描述 || --- | --- | --- | --- || SIGHUP | 1 | 终止进程 | 终端断开连接时发送给与该终端关联的进程常用于重新加载配置文件 || SIGINT | 2 | 终止进程 | 用户在终端按下 ctrlc 时发送给当前前台进程 || SIGQUIT | 3 | 终止进程并生成核心转储文件 | 用户在终端按下 ctrl\ 时发送给当前前台进程 || SIGTERM | 15 | 终止进程 | 通常用于请求进程正常终止是系统默认的终止信号 || SIGKILL | 9 | 强制终止进程 | 不能被捕获、阻塞或忽略用于强制终止无法正常响应的进程 || SIGCONT | 18 | 继续执行暂停的进程 | 用于恢复被暂停的进程 || SIGSTOP | 19 | 暂停进程 | 不能被捕获、阻塞或忽略用于暂停进程的执行 || SIGTSTP | 20 | 暂停进程 | 可以被捕获、阻塞或忽略用于暂停进程的执行 |6.3如何使用进程信号#进程信号控制工具kill 进程信号 pid #处理精确指定的进程killall 进程信号 进程名字 #按照进程名称批量处理进程pkill 进程信号 进程条件 #按照条件处理进程七system守护进程7.1守护进程是什么守护进程Daemon 是一类脱离终端、长期在后台运行的特殊进程是 Linux 系统服务的主要实现形式。系统开机后自动启动持续提供网络、存储、日志、权限等各类服务不会因为终端关闭、用户退出而终止。7.2守护进程的特点1. 脱离终端不依附任何终端关闭终端、退出登录不会终止进程。2. 后台运行默认在后台静默执行无交互界面。3. 生命周期长多数随系统开机启动、关机结束长期常驻系统。4. 父进程为systemdCentOS 7 主流系统中父进程是 PID1 的 systemd 孤儿进程也会被其收养。5. 自动运行一般设置为开机自启无需人工手动启动。6. 用途专一主要用于提供系统服务、网络服务、定时任务等持续对外提供功能。7. 文件权限独立通常以专用用户身份运行拥有独立的运行日志、工作目录。7.3系统守护进程用sshd来理解守护进程开启两个虚拟机并查看该虚拟机的ip使用 # IP a 命令查看ip用第一台主机通过#sshd -l root ip的形式远程访问另一台主机root用户的密码并且开启可访问模式# 启动服务systemctl start 服务名# 停止服务systemctl stop 服务名# 重启服务先停止再启动会中断业务systemctl restart 服务名# 重载配置不停止服务加载新配置systemctl reload 服务名# 设置开机自动启动systemctl enable 服务名# 关闭开机自启systemctl disable 服务名# 查看是否设置开机自启systemctl is-enabled 服务名