linux 进程的处理相关

版权声明:旨在学习交流,共同进步 https://blog.csdn.net/u013735511/article/details/79976842

linux的进程定义

  1. 进程是一个独立的可调度的活动;
  2. 进程是一个抽象实体,当它执行某个任务时,要分配和释放各种资源;
  3. 进程是可以并行执行的计算单位;
  4. 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动;

以上定义中我们可以抽取出几个关键词:独立、调度、资源、活动、数据、并行、任务。一个进程就是一次活动,活动具有独立特性,它有自己独有的资源和数据,它的任务是根据拥有资源对数据进行处理。往上层来想,当多个活动出现的时候,需要进行活动的调度,当然这些活动可以一起进行,也可以按顺序进行。

关于进程的具体理论知识内容请参看https://blog.csdn.net/rl529014/article/details/51280018

进程很重要,那么我们怎么查进程,管理进程呢?

linux进程查询的方式

就本文在开发中经常使用的是两种方式,ps -aux|grep java 和 top,我们依次分析下这两个东西。

ps进程查询方式

ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定”A”参数相同。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。

这个内容还是蛮多的,个人觉得只需要会使用aux就好了。

top进程查询方式

我在本机上执行了top命令,具体内容如下
这里写图片描述

1.第一行

03:48:45 — 当前系统时间
3 users — 当前有3个用户登录系统
load average: 0.15, 0.16, 0.14 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

2.第二行

Tasks — 任务(进程),系统现在共有232个进程,其中处于运行中的有1个,231个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

3.第三行

1.0% us — 用户空间占用CPU的百分比。
0.3% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
98.7% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比

4.第四行

3565176 total — 物理内存总量(8GB)
2405824 used — 使用中的内存总量(7.7GB)
166168 free — 空闲内存总量(530M)
993184 buffers — 缓存的内存量 (79M)

5.第五行

3801084 total — 交换区总量
5032 used — 使用的交换区总量
3796052 free — 空闲交换区总量
596868 cached — 可用的内存量

6.第六行

7.第七行

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

这样基本就可以了解到top的基本用法了,至于更深层次的用法请参看https://linux.cn/article-2352-1.html

关闭进程的命令

kill!!! 用的最多的一个关闭命令了

现在有另外一个需求,就是查找某个进程并关闭。比如我们使用python开了很多进程,想关闭所有python进程,已经确定都没用了。怎样最快最好的关闭。

ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill -9 

grep用法参看:http://man.linuxde.net/grep
awk用法参看:https://www.cnblogs.com/ginvip/p/6352157.html
xargs用法参考:http://man.linuxde.net/xargs

其它内容

进程的后台运行

nohup command & //command是命令的名称
阅读更多

没有更多推荐了,返回首页