监视系统活动和查看进程,滴水不漏
Linux是多任务多用户的操作系统
Linux可以管理多个同时运行的程序,是多任务系统
Linux也会一个多用户的系统
多个用户可以在不同的地方通过网络连接到同一个Linux系统进行操作
多用户多任务的隐患
可能某个用户或者某个任务(其实就是运行着的程序)
在某个时间让Linux系统过载了,意思就是太累了,任务太繁重了
那么这个时候我们就得知道,到底是那个小子干的好事,那个程序在宕我的系统,如何才能停止一个不再响应的程序
w命令:都有谁,在做什么
帮助我们快速了解目前有哪些用户登录着
我们按照从上到下,从左到右的的顺序分部分解释
**时间:**这是我在运行w命令时的时间
**表示系统正常运行多长时间:**一旦系统关机或重启,运行时间会归零
up表示运行正常,后边表示时间
uptime命令:,其实就是w命令的第一行
时间+正常运行+几个用户+负载区域
负载区域:
load是 负载,负荷的意思
average是平均值的意思
负载的3个数值:
1分钟之内的平均负载
5分钟之内的平均负载
15分钟之内的平均负载
这些数值就表示一段时间内系统的平均活跃进程数,也就是使用CPU处理器的一个进程数目
也就是近1分钟呢有0.01个进程使用的处理器,一个单核的处理器如果负载超过1,那就是过载了,双核的负载超过2就是过载了,以此类推
所以有的服务器如果去查看它负载时的数值达到了50,如果负载值在较长的时间都维持较大的话,就意味着系统可能出问题了,我们可以用另外一个命令会知随时间变化的一个负载曲线图
tload命令:会知随时间变化的一个负载曲线图
tload
纵坐标表示负载的大小,横坐标表示负载的时间
登录的用户列表
用who命令也可以做到
在w命令中除去第一行,也就是uptime那一行
下边就是一个部分,也就是登录用户的一个列表,显示当下系统中连接的用户是哪几位,做什么任务,任务进行多场时间了
第一列:USER
用户名(登录名)。
第二例:TTY
TTY:登录的终端名称
:0的意思应该是值本地,就是我们目前所在的这个图形终端
tps是指图形终端
tty黑窗口终端,tty终端
添加了一个tty终端后
第三列:FROM
用户连接到终端的IP地址
第四列:LOGIN@
用户连接系统的时间
第五列:IDLE
用户多久没有活跃了(没有运行任何命令)
idle是英语 不活跃的,空闲的意思
第六列:JCPU
表示该终端所有相关的进程使用CPU(处理器)的时间
每当进程结束就会停止计时,开始新的进程则会重新计时
第七列:PCPU
表示CPU(处理器)执行当前进程所消耗的时间
当前进程就是在WHAT列中显示的程序
第八列:WHAT
表示当下用户正在运行的程序
ps命令和top命令:列出运行的进程
简单来说,进程就是加载到内存中的运行程序
大多数程序运行时都只在内存中启动一个进程
例如Linux中的OpenOffice这个软件
有的程序运行时会创建不少进程
例如Google的Chrome浏览器
每开一个标签栏都会创建一个新的进程
在网络服务器上,一般我们都是Apache这个软件来发送网页的
Apache在运行时就会创建很多进程,分别负责不同的任务
一般的数据库软件,例如MySQL,PostgreSQL也是如此
ps:进程的静态列表
ps是Process Status的缩写
process是进程的意思,status是状态的意思
ps命令用于显示当前系统中的进程
ps显示的进程列表不是随时间而更新的,而是静态的
只是运行ps命令当时的那个状态
或者说是进程的一个快照,英语为snapshot
不加任何参数直接输入ps命令
显示的有四列
PID:
PID就是进程号
pid是identifier的缩写
每个进程有唯一的进程号
TTY:
进程运行所在终端
TIME
表示进程运行了多久
CMD
就是产生这个进程的程序名
如果你在进程列表看到好几行都好使同样的进程名
那就是同样的程序产生了不止一个进程
ps命令常用参数
ps -ef
列出所有进程
-ef参数可以使ps命令列出所有用户在所有终端的所有进程
UID
第一列UID 是user identifier的缩写 表示运行此进程的用户
PID
进程号
PPID
parent process ID:程序的父进程号
ps -efH:以乔木状列出所有进程
-efH可以使ps命令按照乔木状列出所有进程,表示出父子进程的缩进
ps -u用户名:列出此用户运行的进程
ps -u xxx #用实际的用户去替换 xxx
#### ps -aux :通过CPU和内存的使用来过滤进程
ps -aux | less
默认的结果集是未排好序的,可以通过 --sort参数来排序
我们要根据CPU是使用率来降序排列
比如说,我们要根据CPU是使用率来降序排列:
ps -axu --sort -pcpu | less
这下就可以看出那个进程占用的cpu最多了
我们要根据内存是使用率来降序排列
ps -axu --sort -pmem | less
将cpu和内存参数合并到一起,并通过管道符显示前十个结果
ps -axu --sort -pcpu,+pmem |head
pstree 命令:以树形结构显示进程
ps -axjf 和 pstree效果比较类似
以树形结构显示进程
总结
Linux是多任务多用户的操作系统
w
w命令会显示当下哪些用户在系统s行登陆着,在做什么,还可以获知系统的时间,持续运行时间,负载等信息
ps
ps命令显示进程的快照(snapshot),是静态的