您的位置:首页 > 运维架构 > Linux

Linux进程管理 - PRI,nice,free,uname,netstat

2015-08-11 09:27 615 查看

优先运行序 (priority, PRI)

这个 PRI 值越低代表越优先的意思。不过这个 PRI 值是由核心动态调整的, 使用者无法直接调整 PRI 值的。



由於 PRI 是核心动态调整的,我们使用者也无权去干涉 PRI !那如果你想要调整进程的优先运行序时,就得要透过 Nice 值了!Nice 值就是上表的 NI 啦!一般来说, PRI 与 NI 的相关性如下:

PRI(new) = PRI(old) + nice

不过你要特别留意到,如果原本的 PRI 是 50 ,并不是我们给予一个 nice = 5 ,就会让 PRI 变成 55 喔! 因为 PRI 是系统『动态』决定的,所以,虽然 nice 值是可以影响 PRI ,不过, 最终的 PRI 仍是要经过系统分析后才会决定的。另外, nice 值是有正负的喔,而既然 PRI 越小越早被运行, 所以,当 nice 值为负值时,那么该进程就会降低 PRI 值,亦即会变的较优先被处理。此外,你必须要留意到:

nice 值可调整的范围为 -20 ~ 19 ;

root 可随意调整自己或他人程序的 Nice 值,且范围为 -20 ~ 19 ;

一般使用者仅可调整自己进程的 Nice 值,且范围仅为 0 ~ 19 (避免一般用户抢占系统资源);

一般使用者仅可将 nice 值越调越高,例如本来 nice 为 5 ,则未来仅能调整到大於 5;

nice :新运行的命令即给予新的 nice 值

[root@www ~]# nice [-n 数字] command
选项与参数:
-n  :后面接一个数值,数值的范围 -20 ~ 19。


eg:用root给一个nice值为-5, 用于运行vi,并观察该进程。



原本的 bash PRI 为 80 ,所以 vi 默认应为 80。不过由於给予 nice 为 -5 , 因此 vi 的 PRI 降低了!但并不一定都是降低为75 ,因为核心还会动态调整!

renice :已存在程序的 nice 重新调整

[root@www ~]# renice [number] PID
选项与参数:
PID :某个程序的 ID 啊!


eg:找出自己的bash PID,并将该PID的nice调整到10



free:观察内存使用情况

[root@www ~]# free [-b|-k|-m|-g] [-t]
选项与参数:
-b  :直接输入 free 时,显示的单位是 Kbytes,我们可以使用 b(bytes), m(Mbytes)
k(Kbytes), 及 g(Gbytes) 来显示单位喔!
-t  :在输出的最终结果,显示实体内存与 swap 的总量。


eg:显示目前系统的内存容量



uname:查阅系统与核心相关咨询

[root@www ~]# uname [-asrmpi]
选项与参数:
-a  :所有系统相关的资讯,包括底下的数据都会被列出来;
-s  :系统核心名称
-r  :核心的版本
-m  :本系统的硬件名称,例如 i686 或 x86_64 等;
-p  :CPU 的类型,与 -m 类似,只是显示的是 CPU 的类型!
-i  :硬件的平台 (ix86)


eg:输出系统的基本咨询



uptime:观察系统的启动时间与工作负载



netstat:追踪网络或插槽档

[root@www ~]# netstat -[atunlp]
选项与参数:
-a  :将目前系统上所有的连线、监听、Socket 数据都列出来
-t  :列出 tcp 网络封包的数据
-u  :列出 udp 网络封包的数据
-n  :不以程序的服务名称,以埠号 (port number) 来显示;
-l  :列出目前正在网络监听 (listen) 的服务;
-p  :列出该网络服务的程序 PID


eg:列出目前系统已经创建的网络连线与unix socket状态



dmesg:分析核心产生的信息



dmesg显示的信息实在太多了,运行时一般加入管线命令来撷取需要的信息。

vmstat:侦测系统资源变化

[root@www ~]# vmstat [-a] [延迟 [总计侦测次数]] <==CPU/内存等资讯
[root@www ~]# vmstat [-fs]                      <==内存相关
[root@www ~]# vmstat [-S 单位]                  <==配置显示数据的单位
[root@www ~]# vmstat [-d]                       <==与磁碟有关
[root@www ~]# vmstat [-p 分割槽]                <==与磁碟有关
选项与参数:
-a  :使用 inactive/active(活跃与否) 取代 buffer/cache 的内存输出资讯;
-f  :启动到目前为止,系统复制 (fork) 的程序数;
-s  :将一些事件 (启动至目前为止) 导致的内存变化情况列表说明;
-S  :后面可以接单位,让显示的数据有单位。例如 K/M 取代 bytes 的容量;
-d  :列出磁碟的读写总量统计表
-p  :后面列出分割槽,可显示该分割槽的读写总量统计表


eg:统计目前主机CPU状态,每秒1次,共计3次



内存栏位 (procs) 的项目分别为:

r :等待运行中的进程数量;b:不可被唤醒的进程数量。这两个项目越多,代表系统越忙碌 (因为系统太忙,所以很多进程就无法被运行或一直在等待而无法被唤醒之故)。

内存栏位 (memory) 项目分别为:

swpd:虚拟内存被使用的容量; free:未被使用的内存容量; buff:用於缓冲内存; cache:用於高速缓存。 这部份则与 free 是相同的。

内存置换空间 (swap) 的项目分别为:

si:由磁碟中将程序取出的量; so:由於内存不足而将没用到的进程写入到磁碟的 swap 的容量。 如果 si/so 的数值太大,表示内存内的数据常常得在磁碟与主内存之间传来传去,系统效能会很差!

磁碟读写 (io) 的项目分别为:

bi:由磁碟写入的区块数量; bo:写入到磁碟去的区块数量。如果这部份的值越高,代表系统的 I/O 非常忙碌!

系统 (system) 的项目分别为:

in:每秒被中断的进程次数; cs:每秒钟进行的事件切换次数;这两个数值越大,代表系统与周边设备的沟通非常频繁! 这些周边设备当然包括磁碟、网络卡、时间钟等。

CPU 的项目分别为:

us:非核心层的 CPU 使用状态; sy:核心层所使用的 CPU 状态; id:闲置的状态; wa:等待 I/O 所耗费的 CPU 状态; st:被虚拟机器 (virtual machine) 所盗用的 CPU 使用状态。

eg:系统上面所有的磁盘读写状态

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: