Linux进程管理
一、Linux下存在进程和线程两种操作系统的基本概念。
Linux系统特性:
1. 以多进程形式,允许同时多个任务
2. 以线程形式,允许单个任务分成不同的部分去运行
3. 锁机制,防止线程资源抢夺。
二、Linux管理进程的命令
1. ps命令
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时终端、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行状态、进程是否结束、进程有没有僵死,哪些进程占用了过多的资源等等。
ps不加参数,输出的是当前用户所在终端的进程
PID:进程标识号
TTY:进程所属的控制台号码
TIME:进程使用CPU总的时间
CMD:正在执行的命令行
ps -ef 参数
UID:由该用户执行的进程
PID:进程标识号
PPID:进程的父进程标识号
C:CPU使用的资源百分比
STIME:进程开始的时间
TTY:该进程是哪个终端上运行的,若无终端,显示?。tty1-tty6是本机的登录进程,pts/0等表示远程连接。
TIME:进程使用CPU总的时间
CMD:正在执行的命令行
ps -aux
USER:该进程属于的用户
PID:该进程号码
%CPU:进程占用CPU的资源比率
%MEM:该进程占用CPU的资源比率
VSZ:进程使用的虚拟内存,单位Kbytes
RSS:该进程占用固定的内存量,单位Kbytes
TTY:该进程运行的终端位置
STAT:进程的目前状态(R运行中;S终端睡眠中,可以被唤醒;D不可中断睡眠;T正在检测或是停止了;Z已停止,无法由父进程正常终止,变成了zombie僵尸进程;+前台进程;|多线程进程;N低优先级进程;<高优先级进程;s进程领导者(含有子进程);L锁定到内存中)
START:进程启动时间
TIME:CPU运行时间
COMMAND:进程命令
显示指定用户的进程:ps -u root
显示进程树:ps -eH (-e显示所有进程;-H显示进程树)
2. pstree命令
pstree指令用ACSII字符显示树状结构,清楚的表达了程序间的相互关系。它能将当前的执行程序已树状结构显示。pstree命令支持指定特定程序PID或使用者USER作为显示的起始。
3. pgrep命令
pgrep命令是通过程序的名字来查询进程的工具。一般是用来判断程序是否正常进行。
4. kill命令
kill命令发送指定的信号到相应进程。不指定信号将发送SIGTERM(15)终止指定进程
常用信号解释
终止进程:kill默认发送的信号是15,用于终止进程。
特殊信号0:kill的信号中存在一个特殊信号0,使用kill -0 $pid,代表不发给任何信号给pid,但是会对pid是否存在对应的进程做检查,存在此进程返回0,不存在返回1
5. killall命令
killall命令:kill杀死进程需要获取进程的pid号,killall命令可以直接通过名字杀死
杀死所有某用户启动的进程:killall -u 用户名 进程名
杀死等待进程:killall -w 进程名
6.pkill命令
pkill命令可以通过进程名终止指定的进程,对比killall杀死进程可能要执行多次,pkill可以杀死进程以及子进程
通过进程名杀死
通过终端名杀死进程(检查多个终端使用命令w,pkill的-t参数可以指定终端下的所有进程)
通过用户名杀死进程:pkill -u 用户名
7. top命令
top命令用于实时的监控系统处理器的状态,以及各种进程的资源占用情况。还可以按照CPU使用量、内存使用量进行排序显示,以及交互式的命令操作。
显示进程信息:
前五行是系统整体的统计信息。
第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
08:42:32 当前时间
up 9min 系统运行时间,格式为时:分
2 users 当前登录用户数
load average: 0.00, 0.03, 0.04 系统负载,即任务队列的平均长度.(三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值)
第二、三行为进程和CPU的信息
Tasks: 111 total 进程总数
1 running 正在运行的进程数
110 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.0% us 用户空间占用CPU百分比
0.2% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.8% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si
最后两行为内存信息。内容如下:
Mem: 1863088k total 物理内存总量
178572k used 使用的物理内存总量
1546084k free 空闲内存总量
138432k buff/cache 用作内核缓存的内存量
Swap: 2097148k total 交换区总量
0k used 使用的交换区总量
2097148k free 空闲交换区总量
1535660k cached 缓冲的交换区总量
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
动态进程字段解释如下:
PID 进程id
PPID 父进程id
RUSER Real
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态。
- D=不可中断的睡眠状态
- R=运行
- S=睡眠
- T=跟踪/停止
- Z=僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志,参考
显示多核不同的CPU信息(进入top命令,按下数字1,查看逻辑CPU的个数):
按照内存使用量排序(进入top命令,按下M)
显示进程完整路径:top -c
设置刷新到的时间(设置top检测信息,几秒钟更新一次):top -d 2
设置top命令刷新次数:top -n 2 #top命令更新2次后退出
显示指定的进程信息(检测某一个进程的实时资源使用量):top -p pid
8.nohup命令
nohup命令可以将程序已忽略挂起信号的方式运行起来,被运行程序的输出信息将不再显示到终端。无论是否将nohup命令的输出重定向到终端,输出都将写入到当前目录的nohup.out文件,如果当前目录的nohup.out文件不可写入,则输出到$HOME/nohup.out文件中。
nohup直接加命令(让执行命令在当前会话终止后,继续保持运行(用户关闭终端后,程序将结束运行,nohup可以让它一直在后台运行))
此时关闭终端,再次登录新终端,检查进程和命令的输出
一般不会去关闭当前窗口,而是nohup命令配合&符号,直接把程序存放后台,如:nohup ping www.baidu.com &
不显示命令执行结果,直接重定向,如:nohup ping www.baidu.com > mynohup.out 2>&1 &
9.bg命令
bg命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加&的效果相同,都是将其放在系统后台执行。
10.runlevel命令
读取系统/var/run/utmp文件夹定位系统的运行级别记录,然后显示当前系统的执行等级。
0 :停机
1 :单用户模式
2 :多用户模式,无网络
3 :完全的多用户模式
4 :用户自定义
5 :图形界面多用户模式
6 :重启
直接输出当前运行模式:runlevel
11. init命令
init命令是Linux的进程初始化工具,是所有Linux进程的父进程,进程ID号是1。init命令的主要任务是根据配置文件/etc/inittab创建Linux进程
12. glances命令
glances是一个由python编写,使用psutil库来从系统抓取信息的基于curses开发的跨平台命令行系统监视工具。
glances可以为Unix和Linux性能专家提供监视和分析性能数据的功能,其中包括:CPU使用率,内存使用情况,内核统计信息和运行队列信息;磁盘I/O速度、传输和读/写比率;文件系统中的可用空间;磁盘适配器;网络I/O速度、传输和读/写比率;页面空间和页面速度;消耗资源最多的进程;计算机信息和系统资源等。
glances工具可以在用户的终端上实时显示重要的系统信息,并动态的对其进行更新。glances在屏幕上对数据进行显示,并且每隔两秒钟对其进行更新。glances工具还可以将相同的数据捕获到一个文件,便于以后对报告进行分心和绘制图形。输出文件可以是电子表格的格式(.csv)或html格式。
1)安装glances:yum install glances
2)glance 界面
glances 是一个命令行工具包括如下命令选项:
-b:显示网络连接速度 Byte/ 秒
-B @IP|host :绑定服务器端 IP 地址或者主机名称
-c @IP|host:连接 glances 服务器端
-C file:设置配置文件默认是 /etc/glances/glances.conf
-d:关闭磁盘 I/O 模块
-e:显示传感器温度
-f file:设置输出文件(格式是 HTML 或者 CSV)
-m:关闭挂载的磁盘模块
-n:关闭网络模块
-p PORT:设置运行端口默认是 61209
-P password:设置客户端 / 服务器密码
-s:设置 glances 运行模式为服务器
-t sec:设置屏幕刷新的时间间隔,单位为秒,默认值为 2 秒,数值许可范围:1~32767
-h : 显示帮助信息
-v : 显示版本信息
进程信息字段解释:
VIRT: 虚拟内存大小
RES: 进程占用的物理内存值
%CPU:该进程占用的 CPU 使用率
%MEM:该进程占用的物理内存和总内存的百分比
PID: 进程 ID 号
USER: 进程所有者的用户名
TIME+: 该进程启动后占用的总的 CPU 时间
IO_R 和 IO_W: 进程的读写 I/O 速率
NAME: 进程名称
NI: 进程优先级
S: 进程状态,其中 S 表示休眠,R 表示正在运行,Z 表示僵死状态。
IOR/s 磁盘读取
IOW/s 磁盘写入
3)glances交互式命令:
h : 显示帮助信息
q : 离开程序退出
c : 按照 CPU 实时负载对系统进程进行排序
m : 按照内存使用状况对系统进程排序
i: 按照 I/O 使用状况对系统进程排序
p: 按照进程名称排序
d : 显示磁盘读写状况
w : 删除日志文件
l : 显示日志
s: 显示传感器信息
f : 显示系统信息
1 : 轮流显示每个 CPU 内核的使用情况(次选项仅仅使用在多核 CPU 系统)
4)glances运行web服务
(1).安装python的包管理工具pip:yum install python python-pip python-devel gcc
(2). 安装web模块bottle:pip install bottle
(3). 启动服务:glances -w
5)glances服务器/客户端模式
glances支持C/S模块,可以实现远程监控,而不用登陆另一台服务器
(1)运行服务端:glances -s -B 0.0.0.0
(2)客户端连接:glances -c 服务端ip