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

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

了解系统状态

who

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

1
2
$ who
feather tty7 2019-02-01 12:23 (:0)

  • 第一列:用户名
  • 第二列:终端设备的设备文件名,设备文件一般位于目录/dev下

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

whoami

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

1
2
$ whoami
feather

tty

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

1
2
$ tty
/dev/pts/0

uptime

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

1
2
$ 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命令列出资源占用排名靠前的进程

1
2
3
4
5
6
7
8
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命令,只列出当前终端上启动的进程

1
2
3
4
$ ps
PID TTY TIME CMD
10691 pts/0 00:00:01 zsh
12044 pts/0 00:00:00 ps

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

1
$ ps -e

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

1
2
3
4
$ 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格式列出每一个进程

1
2
3
4
$ 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

1
2
3
4
$ 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秒打印一行信息:

1
2
3
4
5
$ 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