Linux系统进程管理

1Linux进程管理

在计算机中,数据的存储位置一般有两种:硬盘和内存。数据存储在硬盘中交文件,存储在内存中叫进程。对硬盘中数据进行操作时,我们要知道文件名称,对内存中数据进行操作时,需要知道进程号。

硬盘中文件与内存中进程之间的关系:在执行或处理硬盘中数据时,系统需要加载到内存中执行,文件的数据被加载到内存后,就变成了进程。

2、进程查看

2.1 ps命令

描述:查看系统所有进程(静态显示)。

用法:ps  [参数]

主要参数:

名称

说明

a

显示当前终端下所有进程信息

u

使用以用户为主的格式输出进程信息

x

显示当前用户所有终端下进程信息

-e

显示所有进程信息,环境变量

-f

使用完整格式显示进程信息

-r

显示正在运行的进程

-l

长格式显示

au

显示较详细信息

aux

显示包含其他使用者的详细的进程信息

最常用:ps -ef  / pe aux

1)ps -ef

[root@test ~]# ps -ef

显示信息说明:

UID

PID

PPID

C

STIME

TTY

TIME

CMD

用户ID

进程ID

父进程ID

进程占用CPU百分比

进程启动时间

进程在哪个终端上运行。

该进程实际使用CPU运行的时间

命令名称及参数

TTY值:若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。

(2)ps aux

[root@test ~]# ps  aux

显示信息说明:

USER

PID

%CPU

%MEM

VSZ

RSS

TTY

STAT

COMMAND

用户名

进程ID

CPU占用率

内存占用率

虚拟资源使用率

物理资源使用率

进程在哪个终端运行(窗口号)

状态

命令名称及参数

说明:linux系统进程状态:STAT状态位常见的状态字符

名称

说明

R

Running,运行进程,随时调运CPU、内存资源

S

自睡眠进程,触发前处于待机状态(减少资源占用)

D

强制睡眠进程,两进程同时运行,内核限制其中一个处于停止状态

Z

僵尸进程,进程终止时,向父进程提交返回值,释放资源,提交与释放之间的特殊状态

T

停止进程

<

高优先级的进程

N

较低优先级的进程

L

有些页被锁进内存

s

进程的领导者(在它之下有子进程)

l

多线程,克隆线程(使用 CLONE_THREAD,)

+

位于后台的进程

 

2.2 top命令

描述:查看系统所有进程(动态显示)。

用法:top  [参数]  

主要参数:

名称

说明

-d

指定每两次屏幕信息刷新时间间隔

-p

通过监控进程ID来监控某个进程状态

-q

该选项使top无延迟进行刷新

-S

指定累计模式

-s

使top在安全模式下运行

-i

使top不显示任何闲置或僵尸进程

-c

显示整个命令行而不是只显示命令名称

Top命令结果说明:

(1)top

第一行:任务队列信息,同uptime结果相同

17:14:14当前时间;up 12 days 18:01:系统运行时间;

2 user:当前登录用户数;load average: 0.00, 0.00, 0.00:系统负载信息


第二行:进程相关信息

total:进程总数  running:正常运行进程数;sleeping:睡眠状态进程数;   stopped:停止的进程数   zombie:僵尸进程数


第三行:CPU使用情况

us:用户空间占用CPU百分比;  sy:内核空间占用CPU百分比;

ni:改变过优先级的进程占CPU百分比; id:空闲CPU百分比;

wa:IO等待占用CPU百分比;  hi:硬中断占用CPU百分比;

si:软中断占用CPU百分比;  st:虚拟机占用百分比。

 

第四行:内存情况

Total物理内存总量  used使用的物理内存总量

free空闲内存总量   buffers用作内核缓存的内存量

 

第五行:swap内存情况

total:交换分区总量;  used:使用的交换分区总量

free:空闲交换分区总量;  

cached:缓冲的交换分区总量,内存中的内容被换出到交换分区,然后又被换入到内存,但使用过的交换分区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换分区进行写入。

各进程的详细信息,各字段含义:

字段

含义

PID

进程id

USER

进程所有者

PR

优先级

NI

Nice值,负值优先级最高,正值表示低优先级

VIRT

进程使用的虚拟内存总量

RES

进程使用的、未被换出的物理内存大小

SHR

共享内存大小

S

进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)

%CPU

CPU占有率

%MEM

没存占有率

TIME+

进程占用CPU时间

COMMAND

命令名/命令行

 

进程优先级:

系统对进程进行调动时,系统内核给每个进程一些计数器,内核选择拥有计数器最多的进程优先执行。Linux系统进程优先级范围-20~19,数值越小,优先级越高。(top命令执行后,执行r,输入进程id号,回车,在输入优先级号,回车,可修改进程优先级。)

nice -n -19 top #以-19的优先级执行top命令。

renice -n -19 -p 8888  #修改进程号8888的优先级为-19.

top其他常用操作:

(1)top        #显式所有进程情况
(2)top -d 10   #每隔10秒显式所有进程情况
(3)top -c     #显示进程的命令行详细信息(默认只有进程名)
(4)top -p 8888 -p 9999   #显示pid是8888和9999两个进程信息
(5)top -d 2 -c -p 8888 #每隔2秒显示pid是8888的进程情况,并显式该
3 进程查询

3.1 pgrep命令

描述:通过匹配其程序名,找到匹配的进程。

用法:pgrep [参数选项] 程序名

主要参数:

必要参数

作用

-l

同时显示进程名和pid

-o

当匹配多个进程时,显示进程号最小的那个

-n

当匹配多个进程时,显示进程号最大的那个

注:进程号越大,并不一定意味着进程的启动时间越晚。

(1)查看ssh进程

[root@test ~]# pgrep -l  ssh

4 进程前后台调度相关命令

1)ctrl+z 将当前进程调入后台并停止执行

2)jbos 查看后台任务列表

3)fg n 将后台进程置于前台执行,n为jbos序号

4)bg n 将后台暂停的进程恢复到后台执行,n为jbos序号

5 结束进程相关命令

(1)ctrl+c 结束当前进程;

(2)kill命令

kill 进程pid  #结束指定进程
kill  -9  进程pid  #强制结束指定进程
kill -9 $(ps -ef |grep 用户名)  #强制结束指定用户进程
kill -u 用户名  #强制结束指定用户进
kill -l 显示kill所有信号选项
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。下面是常用的信号:
HUP 1终端断线;INT 2 中断(同 Ctrl + C);
QUIT 3 退出(同 Ctrl + \);TERM 15 终止;
KILL 9 强制终止;CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)

(3)killall命令

killall命令用于杀死指定名字的进程
killall 程序名 #杀死指定名称的所有进程
killall nginx   #杀死所有nginx进程
killall -9 ssh #杀死所有ssh进程

(4)pkill命令

 pkill 和killall 应用方法差不多,也是直接杀死运行中的程式;如果你想杀掉单个进程,请用kill 来杀掉。

pkill -t tty1     #杀死终端1下的所有进程 
pkill -kill -t pts/2   #踢用户
pkill -9 888     #彻底杀死进程888
pkill -u test   #杀死指定用户test的所有进程
pkill -vu root  #杀死不属于root用户的所有进程

个人公众号:

Linux基础-13day-Linux系统进程管理_linux基础