阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

159次阅读
没有评论

共计 4139 个字符,预计需要花费 11 分钟才能阅读完成。

在 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)状态
%CPUCPU 占用比
%MEM内存占用比
TIME+运行时长
COMMAND启动进程

对显示排序的方法:

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

首部信息显示:

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

9、进程管理命令之 h top

=

比 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]:终止指定的作业;

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计4139字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中