linux 中查看进程,主要是为了查看系统运行的情况:
有哪些程序在运行,占用资源情况及运行效率,关掉不需要的进程
一、查看进程状态,一般使用ps命令
ps 选项
选项如下
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
-a 显示终端上的所有进程,包括其他用户的进程。
-r 只显示正在运行的进程。
-x 显示没有控制终端的进程。
-u 进程的用户信息
我们最常用的是
ps -aux
实例
各列说明
USER进程所有者的用户名。
PID进程的ID。
%CPU该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比
%MEM该进程占用的物理内存占总内存的百分比
VSZ该进程占用的虚拟内存
RSS该进程占用的物理内存的总数量,单位是KB。
TTY虚拟终端
STAT进程状态
S代表休眠状态;
D代表不可中断的休眠状态;
R代表运行状态;
Z代表僵死状态;
T代表停止或跟踪状态
X代表死掉的进程
N代表低优先级
L代表有些页被锁进内存
+代表位于后台的进程组
l代表多线程,克隆线程
START开始时间
TIME运行时间
COMMAND命令
二、查看进程树,使用ptree
可以知道各进程之间的调用关系
效果如下
从以上可以看出,所以进程的开始是systemd
(注:Centos6是initd)
也可以加上选项,如下
-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法;
-G:使用VT100终端机的列绘图字符;
-h:列出树状图时,特别标明现在执行的程序;
-H:此参数的效果和指定"-h"参数类似,但特别标明指定的程序;
-l:采用长列格式显示树状图;
-n:用程序识别码排序。预设是以程序名称来排序;
-p:显示程序识别码;
-u:显示用户名称;
-U:使用UTF-8列绘图字符;
-V:显示版本信息。
常用的格式是 pstree -auhp
使用进程树查看的目的,主要是用来kill掉进程数
因为有一些(病毒)进程,会由父进程,不断的监控子进程,如果子进程被kill掉,就会马上启动新的子进程,所以,需要找到父子进程
三、查看当前系统运行的占用系统资源的状态,使用top命令
(TOP会【默认】间隔3秒刷新一次内存状态,由-d控制刷新频率)
效果如下
如果需要按占用内存的排序,则可以按 M 效果如下
如果需要按占用CPU来排序,可以按 P 效果如下
解释第一行
由上第一行知
当前时间21:20:15
已经运行了4:38
当前在线用户 2
平均负载 【1分钟前】【5分钟前】【15分钟前】
注意
负载不能太大,应该小于3*CPU核心数
如果超过了,就要检查是什么进程占用过多,或者是要考虑升级CPU了
解释第二行
总任务数114
运行中的任务数 1
休眠中的任务数 113
停止的任务数 0
僵尸任务数 0
解释第三行
us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比
hi CPU服务于硬件中断所耗费的时间总额
si CPU服务软中断所耗费的时间总额
st Steal time 虚拟机被hypervisor偷去的CPU时间(如果当前处于一个hypervisor下的vm,实际上hype
解释第四行
物理内存总量
使用的物理内存总量
空闲内存总量
用作内核缓存的内存量
注:centos6中 buff cache是分开说明的,
解释第五行
交换区总量
空闲交换区总量
已使用的交换区总量
可用的交换区总量
解释各列的情况
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 — 进程名称(命令名/命令行)
四、要查看当前有哪些用户登录 使用命令 who
格式 who [选项]
-H或--heading 显示各栏位的标题信息列。
-i或-u或--idle 显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,
如果该用户已超过24小时没有任何动作,则标示出"old"字符串。
-m 此参数的效果和指定"am i"字符串相同。
-q或--count 只显示登入系统的帐号名称和总人数
实例一
who 效果如下
实例二 常用
who -Ha
效果如下
由上得知
root用户,在系统引导界面登录
另外两个连接都是用户bob,使用终端连接
注:常用的命令是,先用who查出各连接,发现不正常的连接,就踢下线(当然要修改它的密码不让他再上来)
命令如下
pkill -kill -t pts/0
执行后,对应的终端会显示连接终断
建议,先检查bob的情况
使用命令cat /etc/shadow
我们把bob这个账号设置为不可登录
使用命令 usermod -s /sbin/nologin bob
再通过pkill命令把其他的连接全踢下线
这样,bob用户,就不能再登录了
注:可能有朋友会问,为什么不直接删除用户或者修改密码?
反正都可以吧。
因为处理事情的顺序问题而已,大家看喜欢怎么弄就怎么弄吧,我是喜欢先禁止登录,再踢下线,然后再慢慢考虑处理方案。
如果处理好后(比如修改了密码,略),再允许bob账号登录,就执行以下命令
usermod -s /bin/bash bob
这样bob就可以连接上来了
好了,完成。
欢迎留言指导。
喜欢的就关注我吧,谢谢
领取专属 10元无门槛券
私享最新 技术干货