进程管理及管理工具pstree,ps、pgrep, pkill、uptime、top、htop、vmstat、lsof 及/proc /sys目录

一. 程序与进程

在这里插入图片描述

相关概念

1,程序:指令及参数的合集,按照既定的逻辑控制计算机运行来完成特定的任务
2,进程:运行的程序,操作系统执行的 基本单位
  进程调度: a轮转调度算法b优先级调度算法c多队列调度算法d多级反馈调度算法e基于公平原则算法
3,两者区别

  • 程序是静态的
  • 进程和程序不是一一对应的关系,相同的程序运行不同的数据就是不同的进程
  • 进程具有交互性和并发性

4,线程:实现多核cpu利用
5,进程和线程的区别

  • 一个进程可以有多个线程,一个线程只能被一个进程拥有
  • 线程不能单独执行,但是每一个线程都有程序的入口等,他必须组成进程才能被执行

父进程和子进程

在这里插入图片描述
父进程和子进程关系:子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码

二.管理命令

pstree

pstree:用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁

参数 作用
-A 各进程树之间的连接以ASCII码字符来连接
-U 各进程树之间的连接以utf8字符来连接,某些终端可能会有错误
-p 同时列出每个进程的PID
-u 同时列出每个进程的所属账号名称

centos6第一个进程是init,centOS7第一个进程是systemd

ps

ps:查看进程

参数 作用
-A 所有的进程均显示出来,与 -e 具有同样的效用
-a 显示现行终端机下的所有进程,包括其他用户的进程
-u 以用户为主的进程状态
x 通常与 a 这个参数一起使用,可列出较完整信息
l 较长、较详细的将该PID 的的信息列出
j 工作的格式 (jobs format)
-f 做一个更为完整的输出

-l对应的输出内容详解

F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
S 代表这个程序的状态 (STAT);
UID 代表执行者身份
PID 进程的ID号!
PPID 父进程的ID;
C CPU使用的资源百分比
PR I指进程的执行优先权(Priority的简写),其值越小越早被执行;
NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。
ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
SZ 使用掉的内存大小;
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
TTY 登入者的终端机位置;
TIME 使用掉的 CPU 时间
CMD 命令

pgrep

pgrep :通过匹配其程序名,找到匹配的进程经常要查看进程的信息,包括进程的是否已经消亡默认只显示pid

参数 详解
-l 同时显示进程名和PID
-o 当匹配多个进程时,显示进程号最小的那个
-n 当匹配多个进程时,显示进程号最大的那个

杀死指定进程killall,kill,pkill

killall +pid

参数 详解
-Z 只杀死拥有scontext 的进程
-e 要求匹配进程名称
-I 忽略小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
–help 显示帮助信息
–version 显示版本显示
杀死所有同名进程 killall nginx; killall -9 bash

kill +pid

前台进程可用ctrl+c来中止,后台进程得使用kill。kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号

参数 详解
l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
a 当处理当前进程时,不限制命令名和进程号的对应关系
p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
s 指定发送信号
u 指定用户

常见信号值

HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)

pkill +进程名

pkill是ps命令和kill命令的结合,按照进程名来杀死指定进程,pkill和killall应用方法差不多,也是直接杀死运行中的程序

htop 可视化top命令

  • 在扩展源下载 ,要先下载扩展源 yum install epel*

vmstat监控工具

  • 服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况
  • vmstat X Y:x秒输出一次 Y次推出

vmstat的常见参数详解

参数 详解
-V 显示vmstat版本信息
-n 只在开始时显示一次各字段名称
-a 显示活跃和非活跃内存
-d 显示各个磁盘相关统计信息
-D 显示磁盘总体信息
-p 显示指定磁盘分区统计信息
-s 显示内存相关统计信息及多种系统活动数量
-m 显示slabinfo
-t 在输出信息的时候也将时间一并输出出来
-S 使用指定单位显示。参数有k、K、m、M,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024bytes)
delay 刷新时间间隔。如果不指定,只显示一条结果
count 刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷

lsof

lsof:列出系统打开文件最好是root身份用此命令

com pid user fd type devicesize/off node name
命令名 进程id 进程所有者 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 文件类型,如DIR、REG 指定磁盘的名称 文件的大小 索引节点(文件在磁盘上的标识 打开文件的确切名称

lsof 显示所有打开的文件
lsof aa.a 显示开启文件aa.a的进程
lsof -c x 显示出以字母x开头进程现在打开的文件(可以跟多个)
lsof -p 1234 列出进程号为1234的进程所打开的文件(可以跟离散值)
lsof -g gname/gid 显示归属gname或gid的进程情况
lsof -u username 显示username用户打开的文件情况(^root:除了root用户)
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 网络连接情况(ucp/udp 端口等)

三.进程前后台

前台进程:在shell 处理命令后,创建子进程运行命令, Shell 等待命令退出,然后返回到对用户给出提示符。这条命令与 Shell 异步运行,即在前台运行,用户在它完成之前不能执行别一个命令
后台进程:在命令后面加& ,会在后台运行,前台可以执行其它进程
进程状态:就绪,等待,运行
在这里插入图片描述
进程优先级:在进程执行的过程中,不是所有的进程重要程度都一样,所以引入优先级概念,通过优先级将重要的进程先执行。常规系统上运行的大多数进程所使用的调度策略为 SCHED_OTHER (也称为CHED_NORMAL),但还有其它一些调度策略用于不同的目的。SCHED_OTHER 调度策略运行的进程的相对优先级称为进程的 nice 值,可以有40种不同级别的nice值
nice

  • nice值越高,优先级越低,越容易让出cpu
  • 查看nace值 top(NI或者PR 是将nice值映射到更大优先级队列) ps
  • 调整nice优先级 top(R 输入pid再输入nice)renice (-n x级 -p pid)

四./proc

伪文件系统存在于内存中,不占用外存空间

  • proc下的文件内容
  • 在这里插入图片描述
文件名 含义
/proc/cmdline 启动时传递给kernel的参数信息(就是bootargs信息)
/proc/cpuinfo cpu的信息
/proc/crypto 内核使用的所有已安装的加密密码及细节
/proc/devices 已经加载的设备并分类
/proc/dma 已注册使用的ISA DMA频道列表
/proc/execdomains Linux 内核当前支持的execution domains
/proc/fb 帧缓冲设备列表,包括数量和控制它的驱动
/proc/filesystems 内核当前支持的文件系统类型
/proc/interrupts x86架构中的每个IRQ中断数
/proc/iomem 每个物理设备当前在系统内存中的映射
/proc/ioports 一个设备的输入输出所使用的注册端口范围
/proc/kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb
/proc/kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理
/proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关
/proc/locks 内核锁住的文件列表
/proc/mdstat 多硬盘,RAID配置信息(md=multiple disks)
/proc/meminfo RAM使用的相关信息
/proc/misc 其他的主要设备(设备号为10)上注册的驱动
/proc/modules 所有加载到内核的模块列表
/proc/mounts 系统中使用的所有挂载
/proc/partitions 分区中的块分配信息
/proc/pci 系统中的PCI设备列表
/proc/slabinfo 系统中所有活动的 slab 缓存信息
/proc/stat 所有的CPU活动信息
/proc/uptime 系统已经运行了多久
/proc/swaps 交换空间的使用情况
/proc/version Linux内核版本和gcc版本
/proc/bus 系统总线(Bus)信息,例如pci/usb等
/proc/dri ver 驱动信息
/proc/fs 文件系统信息
/proc/ide ide设备信息
/proc/irq 中断请求设备信息
/proc/net 网卡设备信息
/proc/scsi scsi设备信息
/proc/tty tty设备信息
/proc/net/dev 显示网络适配器及统计信息
/proc/vmstat 虚拟内存统计信息
/proc/vmcore 内核panic时的内存映像
/proc/diskstats 取得磁盘信息
/proc/schedstat kernel调度器的统计信息
/proc/zoneinfo 显示内存空间的统计信息,对分析虚拟内存行为很有用
  • 数字代表进程号,进去后会有如下
    在这里插入图片描述
/proc/N/cmdline 进程启动命令
/proc/N/cwd 链接到进程当前工作目录
/proc/N/environ 进程环境变量列表
/proc/N/exe 链接到进程的执行命令文件
/proc/N/fd 包含进程相关的所有的文件描述符 (ls /proc//fd
/proc/N/maps 与进程相关的内存映射信息
/proc/N/mem 指代进程持有的内存,不可读
/proc/N/root 链接到进程的根目录
/proc/N/stat 进程的状态
/proc/N/statm 进程使用的内存的状态
/proc/N/status 进程状态信息,比stat/statm更具可读性
/proc/self 链接到当前正在运行的进程

五./sys

将系统中的硬件系统有组织有层次的组织起来,具体详情如下

/sys/devices (/sys文件系统最重要的目录结构) 该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备
/sys/dev 该目录下有字符设备(block)和块设备(char)两个子目录,里面全是以主次设备号(major:minor)命名的链接文件,链接到/sys/devices
/sys/class (按功能分类设备) 该目录下包含所有注册在kernel里面的设备类型,每个设备类型表达具有一种功能的设备
/sys/block (从linux2.6.26版本开始已经移到了/sys/class/block) 代表着系统中当前被发现的所有块设备
/sys/bus (按总线类型分类设备) 一般来说每个子目录(总线类型)下包含两个子目录,一个是devices,另一个是drivers;其中devices下是这个总线类型下的所有设备,这些设备都是符号链接,它们分别指向真正的设备(/sys/devices/…下);而drivers下是所有注册在这个总线上的驱动,每个driver子目录下 是一些可以观察和修改的driver参数。 (它也是构成linux统一设备模型的一部分)
/sys/module 该目录包含所有被载入Kernel的模块,无论这些模块是以内联(inlined)方式编译到内核映像文件中还是编译为外模块(.ko文件)
/sys/fs 该目录用来描述系统中所有的文件系统,包括文件系统本身和按照文件系统分类存放的已挂载点。
/sys/kernel 该目录下存放的是内核中所有可调整的参数
/sys/firmware 该目录下包含对固件对象(firmware object)和属性进行操作和观察的接口,即这里是系统加载固件机制的对用户空间的接口.(关于固件有专用于固件加载的一套API)
/sys/power 该目录下有几个属性文件可以用于控制整个机器的电源状态,如向其中写入控制命令让机器关机/重启等等

六.作业

用户向系统提交一个任务,称为作业

  • 作业是由用户发起来的
  • 一个作业包含几个进程
  • 前台只能运行一个作业,而后台可以完成多个作业
  • 作业调度方法:a先来先服务算法b 短作业优先suanfac优先级调度d高响应比优先算法
    jobs 查看后台作业
    bg %x 让作业x在后台运行
    fg %y 将作业y调回到前台

猜你喜欢

转载自blog.csdn.net/qq_46495338/article/details/110419712