本节中要介绍的不只是进程查看方面的内容,因为是个多用户系统,有时侯也要了解其他用户现今在干哪些,所以在本节中还将接触多用户方面的内容。同时Linux是一个多进程系统,时常须要对这种进程进行一些调配和管理;而要进行管理,首先就要晓得现今的进程情况:到底有什么进程?进程情况怎样?等等。所以须要进程查看方面的工作。
who命令
该命令主要用于查看当前在线上的用户情况。这个命令特别有用。假如用户想和其他用户构建,例如使用talk命令,这么首先要确定的就是该用户确实在线上,不然talk进程就难以完善上去。又如,系统管理员希望监视每位登入的用户此时此刻的所作所为,也要使用who命令。
who命令的常用句型格式如下:
who[imqsuwHT][--count][--idle][--heading][--help][--message][--mesg][--version][--writable][file][ami]
所有的选项都是可选的,也就是说可以单独使用who命令。不使用任何选项时,who命令将显示以下三项内容:
loginname:登入用户名;
terminalline:使用终端设备;
logintime:登陆到系统的时间。
假如给出的是两个非选项参数,这么who命令将只显示运行who程序的用户名、登录终端和登陆时间。一般这两个参数是“ami”,即该命令格式为:“whoami”。
下边对who命令的常用参数进行说明。
-m和“whoami”的作用一样,显示运行该程序的用户名。
-q,--count只显示用户的登陆账号和登陆用户的数目,该选项优先级低于其他任何选项。
-s忽视。主要是用于和其他版本的who命令兼容。
-i,-u,--idle在登陆时间旁边显示该用户最后一次对系统进行操作至今的时间,也就是常说的“发呆”时间。其中“.”符号代表该用户在前一秒一直处于活动状态;“old”则表示该用户空闲早已超过了24小时。
-H,--heading显示一行列标题。常用的标题如表4-2所示。
表4-2who命令输出常用标题
标题
说明
USER
用户登入账号
LINE
用户登入使用终端
LOGIN-TIME
用户登入时间
IDLE
用户空闲时间,即未进行操作的时间
PID
用户登入shell的进程ID
FROM
用户网路地址
-w,-T--mesg,--message,--writable和-s选项一样,在登陆账号旁边显示一个字符来表示用户的信息状态:
+:准许写信息;
-:不容许写信息;
?:不能找到终端设备。
--help在标准输出上显示帮助信息。
--version在标准输出上显示版本信息。
下边介绍who命令的一些基本用法。
假如须要查看在系统上到底有什么用户,可以直接使用who命令。
[例17]查看登陆到系统的用户情况
可以看见,如今系统一共有四个用户。第一列是登陆用户的账号;第二列是登陆所使用的终端;第三列是登陆时间;第四列是用户从哪些地方登陆的网路地址,这儿是域名。
通常来说,这样就可以了解登陆用户的大致情况了。但有时前面的显示不是这么直观,由于没有标题说明,不容易读懂,这时就须要使用-H选项了。
[例18]查看登陆用户的详尽情况,键入:
显示如下:
USERLINELOGIN-TIMEIDLEFROM
这样一目了然。其中-u选项指定显示用户空闲时间,所以可以见到多了一项IDLE。第一个root用户的IDLE项是一个“.”,这就说明该用户在前一秒一直是活动的,而其他用户旁边都有一个时间,称为空闲时间。
最后来瞧瞧使用“whoami”格式命令的结果:
可见只显示出了运行该who命令的用户情况,其实这时侯不存在空闲时间。
who命令应用上去十分简单,可以比较确切地把握用户的情况,所以使用特别广泛。
w命令
该命令也用于显示登陆到系统的用户情况,并且与who不同的是,w命令功能更加大大,它不但可以显示有谁登陆到系统,还可以显示出这种用户当前正在进行的工作,但是统计数据相对who命令来说愈发详尽和科学,可以觉得w命令就是who命令的一个提高版。
w命令的显示项目按以下次序排列:当前时间,系统启动到现今的时间,登陆用户的数量,系统在近来一秒、5秒和15秒的平均负载。之后是每位用户的各项数据,项目显示次序如下:登陆账号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。
其中JCPU时间指的是和该终端(tty)联接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间linux下怎么查看当前系统的版本,但却包括当前正在运行的后台作业所占用的时间。而PCPU时间则是指当前进程(即在WHAT项中显示的进程)所占用的时间。下边介绍该命令的具体用法和参数。
句型格式如下:
下边对参数进行说明:
-h不显示标题。
-u当列举当前进程和CPU时间时忽视用户名。这主要是用于执行su命令后的情况。
-s使用短模式。不显示登陆时间、JCPU和PCPU时间。
-f切换显示FROM项,也就是远程主机名项。默认值是不显示远程主机名,其实系统管理员可以对源文件作一些更改促使显示该项成为默认值。
-V显示版本信息。
User只显示指定用户的相关情况。
[例19]显示当前登入到系统的用户的详尽情况
2:50pmup2min,4users,loadaverage:0.22,0.16,0.06
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
ps命令
1.ps简介
后面介绍的两个命令都是用于查看当前系统用户的情况,下边就来瞧瞧进程的情况,这也是本章的主题。要对进程进行检测和控制,首先必需要了解当前进程的情况,也就是须要查看当前进程,而ps命令就是最基本同时也是十分强悍的进程查看命令。使用该命令可以确定有什么进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。其实大部份信息都是可以通过执行该命令得到的。
2.ps命令及其参数
ps命令最常用的还是用于监控后台进程的工作情况,由于后台进程是不和屏幕鼠标这种标准输入/输出设备进行的,所以假如须要检查其情况,便可以使用ps命令了。
该命令句型格式如下:
ps[选项]
下边对命令选项进行说明:
-e显示所有进程。
-f全格式。
-h不显示标题。
-l长格式。
-w宽输出。
a显示终端上的所有进程,包括其他用户的进程。
r只显示正在运行的进程。
x显示没有控制终端的进程。
O[+|-]k1[,[+|-]k2[,…]]按照SHORTKEYS、k1、k2中快捷键指定的多级排序次序显示进程列表。对于ps的不同格式都存在着默认的次序指定。这种默认次序可以被用户的指定所覆盖。其中“+”字符是可选的,“-”字符是倒转指定键的方向。
pids只列举指定进程的情况。各进程ID之间使用冒号分隔。该进程列表必须在命令行参数的最后一个选项前面紧接着给出,中间不能插入空格。诸如:ps-f1,4,5。
以下介绍长命令行选项,这种选项都使用“--”开头:
--sortX[+|-]key[,[+|-]key[linux系统日志,…]]从SORTKEYS段中选一个多字母键。“+”字符是可选的,由于默认的方向就是按数字降序或则辞典次序。诸如:ps-jax-sort=uid,-ppid,+pid。
--help显示帮助信息。
--version显示该命令的版本信息。
在后面的选项说明中提及了排序键,接出来对排序键作进一步说明。须要注意的是排序中使用的值是ps使用的内部值,并非仅用于个别输出格式的伪值。排序键列表见表4-3。
3.常用ps命令参数
后面两节介绍的参数可能让读者感觉有些可怕,实际上这是一个十分容易使用的命令,通常的用户只需把握一些最常用的命令参数就可以了。
最常用的三个参数是u、a、x,下边将通过事例来说明其具体用法。
[例20]以root身分登入系统,查看当前进程状况
PIDTTYTIMECOMMAND
可以看见,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、COMMAND(该进程的命令行输入)。
可以使用u选项来查看进程所有者及其他一些详尽信息,如下所示:
USERPID%CPU%MEMUSZTTYSTATSTARTTIMECOMMAND
test58000.00.418921040ttyp0SNov270:00-bash
在bash进程上面有条横线,意味着该进程便是用户的登陆shell,所以对于一个登陆用户来说带短横线的进程只有一个。还可以见到%CPU、%MEM两个选项,后者指该进程占用的CPU时间和总时间的比率;前者指该进程占用的显存和总显存的比率。
在这些情况下见到了所有控制终端的进程;并且对于其他这些没有控制终端的进程还是没有观察到,所以这时就须要使用x选项。使用x选项可以观察到所有的进程情况。
[例21]下边是使用x选项的事例:
PIDTTYSTATTIMECOMMAND
5922ttyp0S0:00sh-c/usr/bin/gunzip-c/var/catman/cat1/ps.1.gz|/
5923ttyp0S0:00/usr/bin/gunzip-c/var/catman/cat1/ps.1.gz
可以发觉忽然一下子就多出了这么多的进程。这种多下来的进程就是没有控制终端的进程。
后面听到的所有进程都是test用户自己的。似乎还有许多其他用户在使用着系统,自然也就对应着其他的好多进程。假如想对这种进程有所了解,可以使用a选项来查看当前系统所有用户的所有进程。常常使用的是aux组合选项,这可以显示最详尽的进程情况。
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root20.00.000?SWNov250:00[kflushd]
root30.00.000?SWNov250:03[kupdate]
root40.00.000?SWNov250:00[kpiod]
root50.00.000?SWNov250:00[kswapd]
root1810.00.014200?SWNov250:00[klogd]
daemon1910.00.11160312?SNov250:00/usr/sbin/atd
在显示的最上面是其他用户的进程情况,可以看见有root、daemon等用户以及她们所启动的进程。
在前面的反例中,介绍了ps命令最常见的一些选项和选项组合,用户可以按照自己的须要选用。
top命令
top命令和ps命令的基本作用是相同的,显示系统当前的进程和其他状况;并且top是一个动态显示过程,即可以通过用户键盘来不断刷新当前状态。假如在前台执行该命令,它将独占前台,直至用户中止该程序为止。
比较确切的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。显存使用和执行时间对任务进行排序;并且该命令的好多特点都可以通过交互式命令或则在个人订制文件中进行设定。在前面的介绍少将把命令参数和交互命令分开述说。
下边是该命令的句型格式:
d指定每两次屏幕信息刷新之间的时间间隔。其实用户可以使用s交互命令来改变之。
q该选项将使top没有任何延后的进行刷新。假如调用程序有超级用户权限,这么top将以尽可能高的优先级运行。
S指定累计模式。
s使top命令在安全模式中运行。这将消除交互命令所带来的潜在危险。
i使top不显示任何闲置或则僵死进程。
c显示整个命令行而不只是显示命令名
top命令显示的项目好多,默认值是每5秒更新一次,其实这是可以设置的。显示的各项目为:
uptime该项显示的是系统启动时间、已经运行的时间和三个平均负载值(近来一秒,5秒,15秒的负载值)。
processes自近来一次刷新以来的运行进程总量。其实这种进程被分为正在运行的,休眠的,停止的等好多种类。进程和状态显示可以通过交互命令t来实现。
CPUstates显示用户模式,系统模式,优先级进程(只有优先级为负的纳入考虑)和闲置等各类情况所占用CPU时间的比率。优先级进程所消耗的时间也被纳入到用户和系统的时间中,所以总的比率将小于100%。
Mem显存使用情况统计,其中包括总的可用显存,空闲显存,已用显存,共享显存和缓存所占显存的情况。
Swap交换空间统计,其中包括总的交换空间,可用交换空间,已用交换空间。
PID每位进程的ID。
PPID每位进程的父进程ID。
UID每位进程所有者的UID。
USER每位进程所有者的用户名。
PRI每位进程的优先级别。
NI该进程的优先级值。
SIZE该进程的代码大小加上数据大小再加上堆栈空间大小的总量。单位是KB。
TSIZE该进程的代码大小。对于内核进程这是一个很奇怪的值。
DSIZE数据和堆栈的大小。
TRS文本留驻大小。
D被标记为“不干净”的页项目。
LIB使用的库页的大小。对于ELF进程没有作用。
该进程占用的化学显存的总数目,单位是KB。
SHARE该进程使用共享显存的数目。
STAT该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态。
TIME该进程自启动以来所占用的总CPU时间。假如步入的是累计模式,这么该时间还包括这个进程子进程所占用的时间。且标题会弄成CTIME。
%CPU该进程自近来一次刷新以来所占用的CPU时间和总时间的比率。
%MEM该进程占用的化学显存占总显存的比率。
COMMAND该进程的命令名称,假如一行显示不下,则会进行截取。显存中的进程会有一个完整的命令行。
下边介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的把握这种命令比把握选项还重要一些。这种命令都是单字母的,假如在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
立刻刷新显示。
Ctrl+L擦除而且重画屏幕。
h或则?显示帮助画面,给出一些简略的命令总结说明。
k中止一个进程。系统将提示用户输入须要中止的进程PID,以及须要发送给该进程哪些样的讯号。通常的中止进程可以使用15讯号;假如不能正常结束那就使用讯号9强制结束该进程。默认值是讯号15。在安全模式中此命令被屏蔽。
i忽视闲置和僵死进程。这是一个开关式命令。
q退出程序。
r重新安排一个进程的优先级别。系统提示用户输入须要改变的进程PID以及须要设置的进程优先级值。输入一个正值将使优先级增加,反之则可以使该进程拥有更高的优先权。默认值是10。
S切换到累计模式。
s改变两次刷新之间的延后时间。系统将提示用户输入新的时间,单位为s。假如有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s。须要注意的是假如设置太小的时间,很可能会造成不断刷新,因而根本来不及认清显示的情况,但是系统负载也会大大降低。
f或则F从当前显示中添加或则删掉项目。
o或则O改变显示项目的次序。
l切换显示平均负载和启动时间信息。
m切换显示显存信息。
t切换显示进程和CPU状态信息。
c切换显示命令名称和完整命令行。
M按照留驻显存大小进行排序。
P依照CPU使用比率大小进行排序。
T按照时间/累计时间进行排序。
W将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方式。
从里面的介绍中可以见到,top命令是一个功能非常强悍的监控系统的,尤其对于系统管理员而言更是这么。通常的用户可能会认为ps命令虽然就够用了,而且top命令的强劲功能确实提供了不少便捷。下边来瞧瞧实际使用的情况。
[例23]键入top命令查看系统状况
1:55pmup7min,4userlinux下怎么查看当前系统的版本,loadaverage:0.07,0.09,0.06
CPUstates:4.5%user,3.6%system,0.0%nicelinux vi 命令,91.9%idle
Mem:38916Kav,18564Kused,20352Kfree,11660Kshrd,1220Kbuff
Swap:33228Kav,0Kused,33228Kfree,11820Kcached