优先执行序 (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 值
[[email protected] ~]# nice [-n 数字] command 选项与參数: -n :后面接一个数值,数值的范围 -20 ~ 19。 |
eg:用root给一个nice值为-5, 用于执行vi,并观察该进程。
原本的 bash PRI 为 80 。所以 vi 默认应为 80。只是由於给予 nice 为 -5 , 因此 vi 的 PRI 减少了!
但并不一定都是减少为75 ,由于核心还会动态调整!
renice :已存在程序的 nice 又一次调整
[[email protected] ~]# renice [number] PID 选项与參数: PID :某个程序的 ID 啊。 |
eg:找出自己的bash PID,并将该PID的nice调整到10
free:观察内存使用情况
[[email protected] ~]# free [-b|-k|-m|-g] [-t] 选项与參数: -b :直接输入 free 时,显示的单位是 Kbytes,我们能够使用 b(bytes), m(Mbytes) k(Kbytes), 及 g(Gbytes) 来显示单位喔。 -t :在输出的终于结果。显示实体内存与 swap 的总量。 |
eg:显示眼下系统的内存容量
uname:查阅系统与核心相关咨询
[[email protected] ~]# uname [-asrmpi] 选项与參数: -a :全部系统相关的资讯,包含底下的数据都会被列出来; -s :系统核心名称 -r :核心的版本号 -m :本系统的硬件名称,比如 i686 或 x86_64 等; -p :CPU 的类型,与 -m 类似,仅仅是显示的是 CPU 的类型! -i :硬件的平台 (ix86) |
eg:输出系统的基本咨询
uptime:观察系统的启动时间与工作负载
netstat:追踪网络或插槽档
[[email protected] ~]# netstat -[atunlp] 选项与參数: -a :将眼下系统上全部的连线、监听、Socket 数据都列出来 -t :列出 tcp 网络封包的数据 -u :列出 udp 网络封包的数据 -n :不以程序的服务名称。以埠号 (port number) 来显示; -l :列出眼下正在网络监听 (listen) 的服务。 -p :列出该网络服务的程序 PID |
eg:列出眼下系统已经创建的网络连线与unix socket状态
dmesg:分析核心产生的信息
dmesg显示的信息实在太多了。执行时一般增加管线命令来撷取须要的信息。
vmstat:侦測系统资源变化
[[email protected] ~]# vmstat [-a] [延迟 [总计侦測次数]] <==CPU/内存等资讯 [[email protected] ~]# vmstat [-fs] <==内存相关 [[email protected] ~]# vmstat [-S 单位] <==配置显示数据的单位 [[email protected] ~]# vmstat [-d] <==与磁碟有关 [[email protected] ~]# 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:系统上面全部的磁盘读写状态