Linux开发环境及应用·第一周·开始使用Linux(三)

学习使用几个常用命令来了解系统的状态

了解系统状态

who

who命令用于列出当前已登入系统的用户,如下:

$ who
feather  tty7         2019-02-01 12:23 (:0)
  • 第一列:用户名
  • 第二列:终端设备的设备文件名,设备文件一般位于目录/dev下

命令who am i 列出当前终端上的登录用户,我的系统貌似不行

whoami

whoami命令仅仅列出当前终端上的登录用户

$ whoami
feather

tty

tty命令打印当前终端的设备文件名

$ tty
/dev/pts/0

uptime

uptime命令打印系统已开机的时间

$ uptime
 20:22:40 up  7:59,  1 user,  load average: 1.62, 1.43, 1.54
  • 20:22:40 当前时间
  • up 7:59 系统已经开机的时间
  • 1 user 当前登入系统的用户数
  • load average: 1.62, 1.43, 1.54 近期1分钟,5分钟,15分钟内系统CPU的负载平均调度队列长度

top

top命令列出资源占用排名靠前的进程

top - 20:29:37 up  8:06,  1 user,  load average: 1.33, 1.35, 1.46
Tasks: 165 total,   3 running, 162 sleeping,   0 stopped,   0 zombie
%Cpu0  : 38.9 us, 11.1 sy,  0.0 ni, 50.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  : 50.0 us, 11.1 sy,  0.0 ni, 38.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1778508 total,   229804 free,   847668 used,   701036 buff/cache
KiB Swap:  5242876 total,  4300428 free,   942448 used.   611412 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  • 第一行和uptime命令的输出是类似的
  • Tasks 系统的任务信息
  • %Cpu cpu的占用率
  • top命令最下面列出一张进程表,比较重要的信息有:
    • VIRT 进程逻辑地址空间大小(virtual),不断增大有可能是内存泄漏
    • RES 驻留内存数(Resident),即占用物理内存数
    • SHR 与其它进程共享的内存数(share)
    • %CPU 占用CPU百分比
    • %MEM 占用内存百分比
    • TIME+ 占用的CPU时间

ps

ps命令用于查阅进程状态(process status)

无选项运行ps命令,只列出当前终端上启动的进程

$ ps
  PID TTY          TIME CMD
10691 pts/0    00:00:01 zsh
12044 pts/0    00:00:00 ps

e选项,列出系统中所有的进程:

$ ps -e

f选项,以full格式列出每一个进程

$ ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
feather  10691 10687  0 19:27 pts/0    00:00:01 zsh
feather  12090 10691  0 20:39 pts/0    00:00:00 ps -f

l选项,以long格式列出每一个进程

$ ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000 10691 10687  0  80   0 -  4137 -      pts/0    00:00:01 zsh
0 R  1000 12085 10691  0  80   0 -  3923 -      pts/0    00:00:00 ps

常见信息:

  • UID:用户ID
  • PID:进程ID
  • PPID:父进程的PID
  • C:CPU占用指数,最近一段时间(秒级别)进程占用CPU的情况
  • STIME:进程的启动时间
  • SZ:进程逻辑内存大小(Size)
  • TTY:启动进程终端的名字
  • COMMAND(CMD):启动进程的命令名
  • WCHAN:进程在内核的何处睡眠(Wait Channel)
  • TIME:累计执行时间,不占用CPU的时间不计入
  • PRI:优先级
  • S:状态,S=>Sleep,R=>Run,Z=>Zombie(僵尸)

free

free命令用来了解内存使用情况,单位是KB

$ free
              total        used        free      shared  buff/cache   available
Mem:        1778508      868072      211360      159220      699076      593808
Swap:       5242876      942448     4300428

buff/cache:Linux为提高效率,利用程序暂时不用的内存,缓冲读写过的磁盘信息

available:加上释放可用的buffers/cache,系统实际可利用的内存

vmstat

vmstat了解系统负载

每隔1秒打印一行信息:

$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 6  0 942448 181600  89104 614040    4   20   142   155  620  641 12  5 81  2  0
 0  0 942448 188876  89104 611288    0    0     0     0 3095 5923 21 10 69  0  

其中的信息有:

  • procs:r=>等待运行的进程数,b=>处在非中断睡眠状态的进程数
  • memory:free=>空闲的内存,buff/cache=>用做缓存的内存数
  • swap:磁盘/内存的交换页数量
  • io:块设备I/O块数,单位:块/秒
  • system:
    • in=>每秒的硬件中断数(interrupt),包括时钟中断
    • cs=>每秒的环境切换次数(context switch)
  • cpu:cpu的总使用率 us=>user,sy=>system,id=>idle,wa=>wait for disk I/O