参考文档:https://www.runoob.com/w3cnote/linux-common-command-2.html
一、ps -aux
ps -aux ps -ef -a:所有进程。 -u:显示用户。 -x:列出所有tty进程,tty是当前所使用虚拟终端。 -e:所有进程,与a略有区别,这里不做具体区分。 -f:完整显示进程信息。 ctrl + d 进程结束
[root@iZbp1d6ukr7d6j6eosyixaZ LianXi]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 43528 3340 ? Ss Oct26 1:00 /usr/lib/syste root 2 0.0 0.0 0 0 ? S Oct26 0:01 [kthreadd] root 3 0.0 0.0 0 0 ? S Oct26 1:17 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< Oct26 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S Oct26 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S Oct26 0:00 [rcu_bh] root 9 0.1 0.0 0 0 ? S Oct26 27:08 [rcu_sched] root 10 0.0 0.0 0 0 ? S< Oct26 0:00 [lru-add-drain root 298 0.0 0.0 0 0 ? S Oct26 1:00 [jbd2/vda1-8] root 299 0.0 0.0 0 0 ? S< Oct26 0:00 [ext4-rsv-conv root 367 0.0 1.5 88260 28396 ? Ss Oct26 0:23 /usr/lib/syste root 393 0.0 0.1 44616 1864 ? Ss Oct26 0:00 /usr/lib/syste root 462 0.0 0.0 55524 1088 ? S<sl Oct26 0:10 /sbin/auditd root 512 0.0 0.0 0 0 ? S< Oct26 0:00 [nfit] polkitd 534 0.0 0.5 716588 10164 ? Ssl Oct26 0:14 /usr/lib/polki dbus 536 0.0 0.1 58132 2172 ? Ss Oct26 0:43 /usr/bin/dbus- root 552 0.0 0.0 26376 1656 ? Ss Oct26 0:25 /usr/lib/syste root 564 0.0 0.0 25904 932 ? Ss Oct26 0:00 /usr/sbin/atd chrony 575 0.0 0.1 117784 1812 ? S Oct26 0:06 /usr/sbin/chro root 576 0.0 0.0 126284 1580 ? Ss Oct26 0:13 /usr/sbin/cron root 584 0.0 0.0 110104 800 ttyS0 Ss+ Oct26 0:00 /sbin/agetty - root 585 0.0 0.0 110104 812 tty1 Ss+ Oct26 0:00 /sbin/agetty - .......
字段说明
USER: 行程拥有者 PID: pid %CPU: 占用的 CPU 使用率 %MEM: 占用的记忆体使用率 VSZ: 占用的虚拟记忆体大小 RSS: 占用的记忆体大小 TTY: 终端的次要装置号码 (minor device number of tty) STAT: 该行程的状态:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
START: 行程开始时间 TIME: 执行的时间 COMMAND:所执行的指令
二、监控当前系统状态vmstat
说明:vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
[root@iZbp1d6ukr7d6j6eosyixaZ etc]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 78880 172316 749264 0 0 3 7 8 24 1 1 98 0 0 [root@iZbp1d6ukr7d6j6eosyixaZ etc]# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 79028 172316 749264 0 0 3 7 8 24 1 1 98 0 0 [root@iZbp1d6ukr7d6j6eosyixaZ etc]# vmstat 2 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 78748 172316 749264 0 0 3 7 8 24 1 1 98 0 0 0 0 0 78756 172316 749264 0 0 0 0 852 1553 1 1 98 0 0 0 0 0 78756 172316 749264 0 0 0 0 845 1561 1 1 98 0 0 0 0 0 78756 172316 749264 0 0 0 8 827 1526 1 1 99 0 0 0 0 0 78756 172316 749264 0 0 0 0 878 1594 1 1 98 0 0 0 0 0 78756 172316 749264 0 0 0 8 876 1573 2 1 97 0 0 0 0 0 78756 172316 749264 0 0 0 12 847 1462 2 1 97 0 0 ^C
三、uptime
同top查看的第一行
[root@iZbp1d6ukr7d6j6eosyixaZ LianXi]# uptime 14:37:54 up 14 days, 3:51, 1 user, load average: 0.07, 0.07, 0.05
四、top
常用参数
-c 显示完整的进程命令 -s 保密模式 -p <进程号> 指定进程显示 -n <次数>循环显示次数
实例
top - 14:06:23 up 70 days, 16:44, 2 users, load average: 1.25, 1.32, 1.35 Tasks: 206 total, 1 running, 205 sleeping, 0 stopped, 0 zombie Cpu(s): 5.9%us, 3.4%sy, 0.0%ni, 90.4%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 32949016k total, 14411180k used, 18537836k free, 169884k buffers Swap: 32764556k total, 0k used, 32764556k free, 3612636k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28894 root 22 0 1501m 405m 10m S 52.2 1.3 2534:16 java
前五行是当前系统情况整体的统计信息区。
第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:
14:06:23 — 当前系统时间
up 70 days, 16:44 — 系统已经运行了70天16小时44分钟(在这期间系统没有重启过的吆!)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行,Tasks — 任务(进程),具体信息说明如下:
系统现在共有206个进程,其中处于运行中的有1个,205个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行,cpu状态信息,具体属性说明如下:
5.9%us — 用户空间占用CPU的百分比。 3.4% sy — 内核空间占用CPU的百分比。 0.0% ni — 改变过优先级的进程占用CPU的百分比 90.4% id — 空闲CPU百分比 0.0% wa — IO等待占用CPU的百分比 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比 0.2% si — 软中断(Software Interrupts)占用CPU的百分比
备注:在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!
第四行,内存状态,具体信息如下:
32949016k total — 物理内存总量(32GB) 14411180k used — 使用中的内存总量(14GB) 18537836k free — 空闲内存总量(18GB) 169884k buffers — 缓存的内存量 (169M)
第五行,swap交换分区信息,具体信息说明如下:
32764556k total — 交换区总量(32GB) 0k used — 使用的交换区总量(0K) 32764556k free — 空闲交换区总量(32GB) 3612636k cached — 缓冲的交换区总量(3.6GB)
第六行,空行。
第七行以下:各进程(任务)的状态监控,项目列信息说明如下:
PID — 进程id USER — 进程所有者 PR — 进程优先级 NI — nice值。负值表示高优先级,正值表示低优先级 VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR — 共享内存大小,单位kb S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 %CPU — 上次更新到现在的CPU时间占用百分比 %MEM — 进程使用的物理内存百分比 TIME+ — 进程使用的CPU时间总计,单位1/100秒 COMMAND — 进程名称(命令名/命令行)
top 交互命令
h 显示top交互命令帮助信息 c 切换显示命令名称和完整命令行 m 以内存使用率排序 P 根据CPU使用百分比大小进行排序 T 根据时间/累计时间进行排序 W 将当前设置写入~/.toprc文件中 o或者O 改变显示项目的顺序
五、free (cat /proc/meminfo)内存使用情况
常用参数
-b 以Byte显示内存使用情况 -k 以kb为单位显示内存使用情况 -m 以mb为单位显示内存使用情况 -g 以gb为单位显示内存使用情况 -s<间隔秒数> 持续显示内存 -t 显示内存使用总合
free -h
1、执行命令free输出如下
Mem:是内存的使用情况。
total:总内存大小。
used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。
free:空闲的内存大小。
shared:进程间共享内存(一般不会用,可以忽略)。
buff:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。
cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。
available:显示还可以被应用程序使用的物理内存大小。(total = used + free + available)
Swap:硬盘上交换分区的使用大小。
Swap的设计目的是为了内存上的空间用完以后,可以将内存中的空间交换到磁盘上,空出内存来使用。
状态: 当used大、free低、buff/cache低说明内存不足。当used低、free低、buff/cache高,是正常状态,只是缓存没有被使用或者销毁。
调用的顺序:free > buff/cache > Swap
2.linux下内存、Swap、Cache、Buff关系
Cache(缓存)为了调高CPU和内存之间数据交换而设计。Buffer(缓冲)为了提高内存和硬盘(或其他I/O设备的数据交换而设计)。
Cache主要是针对读操作设计的,不过Cache概念可能容易混淆,我理解为CPU本身就有Cache,包括一级缓存、二级缓存、三级缓存,我们知道CPU所有的指令操作对接的都是内存,而CPU的处理能力远高于内存速度,所以为了不让CPU资源闲置,Intel等公司在CPU内部集成了一些Cache,但毕竟不能放太多电路在里面,所以这部分Cache并不是很大,主要是用来存放一些常用的指令和常用数据,真正大部分Cache的数据应该是占用内存的空间来缓存请求过的数据。
Buffer主要是针对写操作设计的,更细的说是针对内存和硬盘之间的写操作来设计的,目的是将写的操作集中起来进行,减少磁盘碎片和硬盘反复寻址过程,提高性能。在Linux系统内部有一个守护进程会定期清空Buffer中的内容,将其写入硬盘内,当手动执行sync命令时也会触发上述操作。
cat /proc/meminfo
[root@iZbp1d6ukr7d6j6eosyixaZ LianXi]# cat -n /proc/meminfo 1 MemTotal: 1776404 kB 2 MemFree: 102328 kB 3 MemAvailable: 801316 kB 4 Buffers: 159744 kB 5 Cached: 628844 kB 6 SwapCached: 0 kB 7 Active: 1286680 kB 8 Inactive: 222788 kB 9 Active(anon): 721356 kB 10 Inactive(anon): 300 kB 11 Active(file): 565324 kB 12 Inactive(file): 222488 kB
六、常用查询
df 命令
显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示
-a 全部文件系统列表 -h 以方便阅读的方式显示信息 -i 显示inode信息 -k 区块为1024字节 -l 只显示本地磁盘 -T 列出文件系统类型
实例:
(1)显示磁盘使用情况
df -l
(2)以易读方式列出所有文件系统及其类型
df -haT
du 命令
du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看:
命令格式:
du [选项] [文件]
常用参数:
-a 显示目录中所有文件大小 -k 以KB为单位显示文件大小 -m 以MB为单位显示文件大小 -g 以GB为单位显示文件大小 -h 以易读方式显示文件大小 -s 仅显示总计 -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
实例: (1)以易读方式显示文件夹内及子文件夹大小 du -h Lianxi/ (2)以易读方式显示文件夹内所有文件大小 du -ah LianXi/ (3)显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和 du -hc test/ Lianxi/ (4)输出当前目录下各个子目录所使用的空间 du -hc --max-depth=1 LianXi/
date 命令
命令参数
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。 -s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。 -u 显示GMT。 %H 小时(00-23) %I 小时(00-12) %M 分钟(以00-59来表示) %s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 %S 秒(以本地的惯用法来表示) %a 星期的缩写。 %A 星期的完整名称。 %d 日期(以01-31来表示)。 %D 日期(含年月日)。 %m 月份(以01-12来表示)。 %y 年份(以00-99来表示)。 %Y 年份(以四位数来表示)。
案例
[root@iZbp1d6ukr7d6j6eosyixaZ LianXi]# date +%Y%m%d --date="+1 day"//显示下一天的日期 20211110
-d参数使用
wc 命令
今年的 11 月 22 日是星期三 date -d '2 weeks' 2周后的日期 date -d 'next monday' (下周一的日期) date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d date -d last-month +%Y%m(上个月是几月) date -d next-month +%Y%m(下个月是几月)
wc 命令
wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出
命令格式:
wc [option] file..
命令参数:
-c 统计字节数 -l 统计行数 -m 统计字符数 -w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
实例:
(1)查找文件的 行数 单词数 字节数 文件名
wc text.txt
[root@iZbp1d6ukr7d6j6eosyixaZ LianXi]# wc text.txt 8 20 117 text.txt
(2)统计输出结果的行数
cat test.txt | wc -l