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