本文根据鸟哥书,总结了一些linux下常用的资源查看命令及其用法。
进程查看
进程查看主要是3个命令,ps静态查看,top动态查看,pstree查阅程序书之间的关系。
ps:将某个时间点的进程运行情况选取下来
ps aux ps -lA ps axjf 参数: -A:所有的进程均显示出来,与-e具有相同的作用; -a:不与terminal有关的所有进程; -u:有效用户相关的进程; x:通常与a这个参数一起使用,可列出较完整的信息; 输出格式规划: l:较长,较详细地将该PID的信息列出; j:工作的格式; -f:做一个更为完整的输出。
|
根据鸟哥的建议,ps记两个不同的参数就可以了,一个是只能查阅自己bash程序的ps -l
,一个则是可以查看所有系统运行的程序ps aux
。
$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 4530 2891 0 80 0 - 2656 wait pts/6 00:00:00 bash 0 R 1000 4742 4530 0 80 0 - 1603 - pts/6 00:00:00 ps
|
- F代表进程标志(process flags),说明这个进程的权限
- S代表这个进程的状态(STAT),主要状态有:
- R(Running):该进程正在运行中;
- S(Sleep):该进程正在睡眠状态(idle),但可以被唤醒(signal);
- D:不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况;
- T:停止状态(stop),可能实在工作控制(后台暂停)或除错(traced)状态;
- Z:(Zombie):“僵尸”状态,进程已经终止,但却无法被删除至内存外。
- UID/PID/PPID:顾名思义,此进程的UID,PID和PPID号码。
- C:代表CPU使用率,单位为百分比。
- PRI/NI:Priority/Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程越快被CPU执行。
- ADDR/SZ/WCHAN:与内存有关,ADDR是kernal function,指出该进程在内存的哪个部分,如果是个running的进程,一般就会显示“-”。SZ代表此进程用掉多少内存,WCHAN表示目前进程是否运行中,同样若-表示正在运行中。
- TTY:登陆者的终端机位置,若为远程登陆则使用动态终端接口(pts/n)。
- TIME:是用掉的CPU时间,是此进程实际花费CPU运行的时间,而不是系统时间。
- CMD:command,造成此程序的触发进程的命令。
相对于ps是选取一个时间点的进程状态,top则可以持续检测进程运行的状态。
top [-d 数字] | top [-bnp] 参数: -d:后面接秒数,表示整个进程界面更新的秒数。默认是5秒。 -b:以批次的方式执行top,还有更多的参数可以使用。(?) -n:与-b搭配,意义是,需要进行几次top的输出结果。(?) -p:指定某些PID来进行查看检测。 在top执行过程中可以使用按键命令: ?:显示在top当中可以输入的按键命令; P:以CPU的使用资源排序显示; M:以内存的使用资源排序显示; N:以PID来排序; T:由该进程使用的CPU时间累积(TIME+)排序; k:给予某个PID一个信号(signal); r:给予某个PID重新定制一个nice值; q:离开top软件的按键。
|
pstree
pstree [-A|U] [-up] 参数: -A:各进程树之间的连接以ASCII字符来连接; -U:各进程树之间的连接以utf8码的字符来连接,**在某些终端接口下可能会有错误**; -p:同时列出每个进程的PID; -u:同时列出每个进程的所属帐号名称。
|
free:查看内存使用情况
pstree [-b|-k|-m|-g] [-t] 参数: -b:直接输入free时,显示的单位是KB,可以使用b(bytes),m(MB),k(KB),以及g(GB)来显示单位; -t:在输出的最终结果中显示无力内存与swap的总量。 例如: $ free -mk total used free shared buffers cached Mem: 2063808 1484128 579680 6188 138728 646624 -/+ buffers/cache: 698776 1365032 Swap: 976892 0 976892
|
uname:查看系统与内核相关信息
uname [-asrmpi] 参数: -a:所有系统相关的信息,包括下面的数据都会被列出来; -s:系统内核名称; -r:内核版本; -m:本系统的硬件名称,例如i686或x86_64等; -p:CPU类型,与-m类似,只是显示的是CPU的类型; -i:硬件的平台(ix86) 例如 $ uname -a Linux vuser-virtual-machine 3.13.0-32-generic
|
uptime:查看系统启动时间与工作负载
这个命令显示目前已经开机多久时间,以及1,5,15分钟的平均负载(注意top也有这个),即uptime可以显示top界面的最上面一行。
$ uptime 14:54:47 up 4:06, 3 users, load average: 0.20, 0.26, 0.23
|
netstat:网络状态
这个命令通常用在网络监控方面。netstat的输出分为两大部分,分别是网络与系统自己的进程相关性部分。
$ netstat -[atunlp] 参数: -a:将目前系统上所有的连接、监听、Socket数据都列出来; -t:列出tcp网络数据包的数据; -u:列出udp网络数据包的数据; -n:不列出进程的服务名称,以端口号(port number)来显示; -l:列出目前正在网络监听(listen)的服务; -p:列出该网络服务的进程PID。
|
dmesg:分析内核产生的信息
系统在开机的时候,内核会去检测系统的硬件。但是这些检测过程要不是没有显示在屏幕上,要么就是很快在屏幕上一闪而过。所有内核检测的信息,都会被记录到内存中的某个保护区段。dmesg这个命令能够将该区段的信息读出来。由于信息较多,可以配合“| more”来显示。
vmstat:检测系统资源变化
vmstat可以检测CPU/内存/磁盘输入输出状态等,下面是常见的参数说明:
vmstat [-a] [延迟[总计检测次数]] vmstat [-fs] vmstat [-s 单位] vmstat [-d] vmstat [-p 分区]
|