Linux基础教程之进程查看和管理及作业控制

在Linux系统中,内核的功用有:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等,在这众多的模块中,进程管理是相对重要的一环,即使不像文件系统和网络功能那么复杂。在进程管理中,内核对进程的创建、切换、撤销和调度都有很详细的定义。

1、进程类型

守护进程在系统引导过程中启动的进程,跟终端无关的进程

前台进程跟终端相关,通过终端启动的进程

注意:也可把在前台启动的进程送往后台,以守护模式运行

2、进程状态

   在内存中运行的进程也有着各种各样的状态

运行态R:running

就绪态:ready

睡眠态

可中断S:interruptable

不可中断D:uninterruptable

停止态T:stopped,暂停于内存中,但不会被调度,除非手动启动

僵死态Z:zombie,结束进程,父进程结束前,子进程不关闭

3、进程调度

调度策略:调度策略就是这样一组规则:决定什么时候以怎样的方式选择一个新进程运行。所以定义一个进程的优先级来满足这样一种策略。这个策略以0-139的优先级来表示。

实时优先级:1-99

无需调整,数字越大,优先级越高

静态优先级:100-139

可调整,数字越小,优先级越高 

优先级以Nice值调整

Nice:-20—-19 ,存在于task_struct结构体中

公式如下:

    pri(new)=nice+pri(old)  

调度算法:早起的Linux中,调度算法是根据进程的优先级选择“最佳”进程来执行,它的缺点是时间开销与“可运行进程数量”有关。某种调度算法一定满足一种函数关系,业界称为Big O

Big O:时间复杂度,用时和规模的关系。有:

O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)

4、进程管理命令之pstree

pstree – display a tree of processes

显示进程数

5、进程管理命令之ps

Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中;

ps [OPTION]…

选项:支持两种风格

常用组合:aux

u: 以用户为中心组织进程状态信息显示

a: 与终端相关的进程;

x: 与终端无关的进程;

~]# ps aux

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT TART   TIME COMMAND

USER 运行进程的用户
PID 进程ID
%CPU 占用CPU
%MEM 占用内存
VSZ 虚拟内存集
RSS 实际内存集
TTY 终端信息
STAT 进程状态
START 进程状态
TIME 运行时间
COMMAND 进程名称

常用组合:-ef

–e: 显示所有进程

-f: 显示完整格式程序信息

常用组合:-eFH

-F: 显示完整格式的进程信息

-H: 以进程层级格式显示进程相关信息

 

6、进程管理命令之pkill

pkill [options] pattern    

-u uid: effective user

-U uid: real user

-t terminal: 与指定终端相关的进程

-l: 显示进程名

-a: 显示完整格式的进程名

-P pid: 显示其父进程为此处指定的进程的进程列表

7、进程管理命令之pidof

根据进程名获取其PID

8、进程管理命令之top

Linux基础教程之进程查看和管理及作业控制

Tasks

total 进程总数
running 运行进程数
sleeping 休眠态进程数
stopped 停止态进程数
zobie 僵死态进程数

%Cpu(s)

us(user space) 用户空间占用CPU百分比
sy(system) 内核空间占用CPU百分比   注:高负载时:us:sy=7:3
ni(nice) 修改nice值占用的CPU百分比
id(idle) 空闲的CPU百分比
wa(wait) 等待IO完成占用的CPU百分比
hi(hardware interrupt) 硬中断占用CPU百分比
si(software interrupt) 软中断占用CPU百分比
st(stole) 被偷走的CPU,比如VMware
buffer(缓冲) 元数据
cache(缓存) 数据
PID 进程号
USER 进程发起者
PR(priority) 优先级
NI(Nice) nice值
VIRT 虚拟内存集
RES 常驻内存集
SHR 共享内存集
S(status) 状态
%CPU CPU占用比
%MEM 内存占用比
TIME+ 运行时长
COMMAND 启动进程

对显示排序的方法:

P 占据的CPU百分比
M 占据内存百分比
T 累积占据CPU时长

首部信息显示:

l uptime信息
t tasks及cpu信息
#数字 cpu分别显示
m memory信息
s 修改刷新时间间隔
Esc 退出
k 终止指定进程
W 保存文件
q 退出命令

9、进程管理命令之htop

=

比top更加高级的进程管理软件

f1帮助

f2切换CPU、mem、swap显示方式

f10退出

常用选项:

-d #: 指定延迟时间;

-u UserName: 仅显示指定用户的进程;

-s COLOMN: 以指定字段进行排序;

命令:

s: 跟踪选定进程的系统调用;

l: 显示选定进程打开的文件列表;

a:将选定的进程绑定至某指定CPU核心;

t: 显示进程树

注意:Fedora-EPEL源

10、进程管理命令之vmstat

Linux基础教程之进程查看和管理及作业控制

vmstat -s: 内存的汇总信息

procs 项目
r 等待运行的进程的个数,和核心数有关
b 处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
swap 项目
si 从磁盘交换进内存的数据速率(kb/s)
so 从内存交换至磁盘的数据速率(kb/s)
io 项目
bi 从块设备读入数据到内存的速率(kb/s)    读
bo 从内存写入磁盘的速率(kb/s)            写
memory 项目
swad 交换内存的使用总量
free 空闲物理内存总量
buffer 用于buffer的内存总量
cache 用于cache的内存总量
system 项目
in: interrupts 中断速率
cs: context switch 进程切换速率
cpu 项目
us 用户空间占用的比例
sy 内核空间占用的比例
id 空闲空间占用的比例
wa 等待IO完成所消耗的时间比例
st 被虚拟化技术偷走的时间比例

11、进程管理命令之glances

glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file] [-o output]

内建命令:

  a  Sort processes automatically     l  Show/hide logs

  c  Sort processes by CPU%           b  Bytes or bits for network I/O

  m  Sort processes by MEM%           w  Delete warning logs

  p  Sort processes by name           x  Delete warning and critical logs

  i  Sort processes by I/O rate       1  Global CPU or per-CPU stats

  d  Show/hide disk I/O stats         h  Show/hide this help screen

  f  Show/hide file system stats      t  View network I/O as combination

  n  Show/hide network stats          u  View cumulative network I/O

  s  Show/hide sensors stats          q  Quit (Esc and Ctrl-C also work)

  y  Show/hide hddtemp stats

常用选项:

-b: 以Byte为单位显示网卡数据速率;

-d: 关闭磁盘I/O模块;

-f /path/to/somefile: 设定输入文件位置;

-o {HTML|CSV}:输出格式;

-m: 禁用mount模块

-n: 禁用网络模块

-t #: 延迟时间间隔

-1:每个CPU的相关数据单独显示;

C/S模式下运行glances命令:

服务模式:

glances -s -B IPADDR

IPADDR: 指明监听于本机哪个地址

客户端模式:

glances -c IPADDR

IPADDR:要连入的服务器端地址

12、进程管理命令之dstat

dstat [-afv] [options..] [delay [count]]

-c: 显示cpu相关信息;

-C #,#,…,total

-d: 显示disk相关信息;

-D total,sda,sdb,…

-g:显示page相关统计数据;

-m: 显示memory相关统计数据;

-n: 显示network相关统计数据;

-p: 显示process相关统计数据;

-r: 显示io请求相关的统计数据;

-s: 显示swapped相关的统计数据;

–top-cpu:显示最占用CPU的进程;

–top-io: 显示最占用io的进程;

–top-mem: 显示最占用内存的进程;

–top-lantency: 显示延迟最大的进程;

13、进程管理命令之kill

kill命令:

向进程发送控制信号,以实现对进程管理

显示当前系统可用信号:

# kill -l

# man 7 signal

常用信号:

1) SIGHUP: 无须关闭进程而让其重读配置文件;

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c;

9) SIGKILL: 杀死正在运行的进程;

15) SIGTERM:终止正在运行的进程;

18) SIGCONT:

19) SIGSTOP:

指定信号的方法:

(1) 信号的数字标识;1, 2, 9

(2) 信号完整名称;SIGHUP

(3) 信号的简写名称;HUP

向进程发信号:

kill [-SIGNAL] PID…

终止“名称”之下的所有进程:

killall [-SIGNAL] Program

14、Linux的作业控制

前台作业:通过终端启动,且启动后一直占据终端;

后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端);

如何让作业运行于后台?

(1) 运行中的作业

Ctrl+z

(2) 尚未启动的作业

# COMMAND &

此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,剥离与终端的关系:

# nohup COMMAND &

查看所有作业:

# jobs

作业控制:

# fg [[%]JOB_NUM]:把指定的后台作业调回前台;

# bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行;

# kill [%JOB_NUM]:终止指定的作业;

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!