Chinaunix首页 | 论坛 | 博客
  • 博客访问: 276676
  • 博文数量: 48
  • 博客积分: 1062
  • 博客等级: 准尉
  • 技术积分: 531
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-23 09:47
文章分类
文章存档

2021年(1)

2019年(1)

2014年(4)

2011年(42)

分类: LINUX

2011-10-17 17:28:08

     linux是个多用户系统,有时候也要了解其他用户现在在干什么,所以在本节中还将接触多用户方面的内容。同时Linux是一个多进程系统,经常需要对这些进程进行一些调配和管理;而要进行管理,首先就要知道现在的进程情况:究竟有哪些进程?进程情况如何?等等。所以需要进程查看方面的工作。 

  who命令 

  该命令主要用于查看当前在线上的用户情况。这个命令非常有用。如果用户想和其他用户建立即时通讯,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。 

  who命令的常用语法格式如下: 

  who [imqsuwHT] [--count] [--idle] [--heading] [--help] [--message] [--mesg] [--version] [--writable] [file] [am i] 

  所有的选项都是可选的,也就是说可以单独使用who命令。不使用任何选项时,who命令将显示以下三项内容: 

  login name:           登录用户名; 

  terminal line:        使用终端设备; 

  login time:           登录到系统的时间。 

  如果给出的是两个非选项参数,那么who命令将只显示运行who程序的用户名、登录终端和登录时间。通常这两个参数是“am i”,即该命令格式为:“who am i”。 

  下面对who命令的常用参数进行说明。 

  -m 和“who am i”的作用一样,显示运行该程序的用户名。 

  -q,--count 只显示用户的登录帐号和登录用户的数量,该选项优先级高于其他任何选项。 

  -s 忽略。主要是用于和其他版本的who命令兼容。 

  -i,-u,--idle 在登录时间后面显示该用户最后一次对系统进行操作至今的时间,也就是常说的“发呆”时间。其中“.”符号代表该用户在前1秒仍然处于活动状态;“old”则表示该用户空闲已经超过了24小时。 

  -H,--heading 显示一行列标题。

  who命令输出常用标题 

  标 题 说 明 

  USER               LINE                LOGIN-TIME         IDLE       PID                     FROM
  用户登录帐号        用户登录使用终端    用户登录时间       用户空闲   用户登录shell的进程ID   用户网络地址 

  -w,-T--mesg,--message,--writable 和-s选项一样,在登录帐号后面显示一个字符来表示用户的信息状态: 

  +:允许写信息; 

  -:不允许写信息; 

  ?:不能找到终端设备。 

  --help 在标准输出上显示帮助信息。 

  --version 在标准输出上显示版本信息。 

  下面介绍who命令的一些基本用法。 

  如果需要查看在系统上究竟有哪些用户,可以直接使用who命令。 

  [例1] 查看登录到系统的用户情况 

  $ who 

   

  可以看到,现在系统一共有两个用户. 
  一般来说,这样就可以了解登录用户的大致情况了。但有时上面的显示不是那么直观,因为没有标题说明,不容易看懂,这时就需要使用-H选项了。 

  [例2] 查看登录用户的详细情况,键入: 

  $ who -uH 

  显示如下:
 
 
  
    这样一目了然。其中-u选项指定显示用户空闲时间,所以可以看到多了一项IDLE。第一个root用户的IDLE项是一个“.”,这就说明该用户在前1秒仍然是活动的,而其他用户后面都有一个时间,称为空闲时间。 

  最后来看看使用“who am i”格式命令的结果: 

  

  可见只显示出了运行该who命令的用户情况,当然这时候不存在空闲时间。 

  who命令应用起来非常简单,可以比较准确地掌握用户的情况,所以使用非常广泛。 

  w命令 

  该命令也用于显示登录到系统的用户情况,但是与who不同的是,w命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对who命令来说更加详细和科学,可以认为w命令就是who命令的一个增强版。 

  w命令的显示项目按以下顺序排列:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1秒、5秒和15秒的平均负载。然后是每个用户的各项数据,项目显示顺序如下:登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。 

  其中JCPU时间指的是和该终端(tty)连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。而PCPU时间则是指当前进程(即在WHAT项中显示的进程)所占用的时间。下面介绍该命令的具体用法和参数。 

  语法格式如下: 

  w -[husfV] [user] 

  下面对参数进行说明: 

  -h 不显示标题。 

  -u 当列出当前进程和CPU时间时忽略用户名。这主要是用于执行su命令后的情况。 

  -s 使用短模式。不显示登录时间、JCPU和PCPU时间。 

  -f 切换显示FROM项,也就是远程主机名项。默认值是不显示远程主机名,当然系统管理员可以对源文件作一些修改使得显示该项成为默认值。 

  -V 显示版本信息。 

  User 只显示指定用户的相关情况。 

  [例3] 显示当前登录到系统的用户的详细情况 

  $ w 

 

  ps命令 

  1. ps简介 

  前面介绍的两个命令都是用于查看当前系统用户的情况,下面就来看看进程的情况,这也是本章的主题。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。 

  2. ps命令及其参数 

  ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。 

  该命令语法格式如下: 

  ps [选项] 

  下面对命令选项进行说明: 

  -e 显示所有进程。 

  -f 全格式。 

  -h 不显示标题。 

  -l 长格式。 

  -w 宽输出。 

  a 显示终端上的所有进程,包括其他用户的进程。 

  r 只显示正在运行的进程。 

  x 显示没有控制终端的进程。 

  O[+|-] k1 [,[+|-] k2 [,…]] 根据SHORT KEYS、k1、k2中快捷键指定的多级排序顺序显示进程列表。对于ps的不同格式都存在着默认的顺序指定。这些默认顺序可以被用户的指定所覆盖。其中“+”字符是可选的,“-”字符是倒转指定键的方向。 

  pids 只列出付ń?痰那榭觥8鹘?蘄D之间使用逗号分隔。该进程列表必须在命令行参数的最后一个选项后面紧接着给出,中间不能插入空格。比如:ps -f1,4,5。 

  以下介绍长命令行选项,这些选项都使用“--”开头: 

  --sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键。“+”字符是可选的,因为默认的方向就是按数字升序或者词典顺序。比如: ps -jax -sort=uid,-ppid,+pid。 

  --help 显示帮助信息。 

  --version 显示该命令的版本信息。 

  在前面的选项说明中提到了排序键,接下来对排序键作进一步说明。需要注意的是排序中使用的值是ps使用的内部值,并非仅用于某些输出格式的伪值。排序键列表见表1-2。 

  表1-2 排序键列表 

短格式 

g

G

j

k

K

M

n

N

o

P

r

s

S

t

U

u

v

长格式 

  cmd 

  cmdline 

flags 

pgrp

tpgid

cutime

cstime

utime

stime 

min_flt

maj_flt

cmin_flt

cmaj_flt

session 

pid

ppid 

rss 

resident

size

share

tty

start_time

uid

user

vsize

priority 

说明

  可执行的简单名称 

  完整命令行 

长模式标志

进程的组ID

控制tty进程组ID 

累计用户时间

累计系统时间

用户时间

系统时间

次要页错误的数量

主要页错误的数量

累计次要页错误

累计主要页错误

对话ID

进程ID

父进程ID

驻留大小

驻留页

内存大小(千字节)

共享页的数量

tty次要设备号

进程启动的时间

UID 

用户名

总的虚拟内存数量(字节)

内核调度优先级


   3. 常用ps命令参数 

  前面两节介绍的参数可能让读者觉得有些可怕,实际上这是一个非常容易使用的命令,一般的用户只需掌握一些最常用的命令参数就可以了。 

  最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。 

  [例4] 以root身份登录系统,查看当前进程状况 

  $ ps 

   

  可以看到,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、COMMAND(该进程的命令行输入)。 

  可以使用u选项来查看进程所有者及其他一些详细信息,如下所示: 

  $ ps u 
   
 
  在bash进程前面有条横线,意味着该进程便是用户的登录shell,所以对于一个登录用户来说带短横线的进程只有一个。还可以看到%CPU、%MEM两个选项,前者指该进程占用的CPU时间和总时间的百分比;后者指该进程占用的内存和总内存的百分比。 

  在这种情况下看到了所有控制终端的进程;但是对于其他那些没有控制终端的进程还是没有观察到,所以这时就需要使用x选项。使用x选项可以观察到所有的进程情况。
阅读(2191) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~