Linux常用命令总结


参考文章


**

文件管理

cd

切换到指定目录

ls

默认列出当前目录,或其他路径下文件或目录信息。

pwd

打印当前目录完整路径。

touch

更新文件的时间,除非提供-c或-h,否则无文件则创建。

touch test1 test2 test3 # 创建三个文件

touch -c test5 # 更新时间,没有则不创建文档

touch -t 201911110000 test1 # 可以看到只创建了test1、test2、test3 , -c不建立任何文件

stat test1 # stat命令可以查看文件的详细变更时间,可以test1文件的最后修改时间为201911110000,说明touch -t可以修改文件最后访问时间。这个参数还是很有用的,你可以把你最近访问的时间修改为一个很早的时间。可以做一些有趣的事情,哈哈。

File: ‘test1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 360736 Links: 1
Access: (0644/-rw-r—r—) Uid: (14060/ localhost) Gid: ( 1001/ hero)
Access: 2019-11-11 00:00:00.000000000 +0800
Modify: 2019-11-11 00:00:00.000000000 +0800
Change: 2019-12-21 20:58:11.290761038 +0800
Birth: -

cat

正序展示输出文件内容

cat -n test # 带行号的输出文件内容

tac

倒序展示输出文件内容

mkdir

创建目录

mkdir -p test1/tmp # 创建多级目录

mkdir -m 777 test2/tmp # 创建目录并设置权限

mkdir -v test7 # 带提示的创建目录

rm

删除文件或目录。

rm -f tmp.go # 强制删除

rm -i tmp.cc # 交互式删除

rm -rf linux # 删除目录中所有文件及目录

rm -d linux # 删除空目录 == rmdir

mv

移动目录或文件,还有重命名效果。

mv tmp.cc tmp.java # 同级目录移动,改名效果

mv /Users/localhost/logs/tmp.txt ./tmp.log # 移动文件并重命名

mv /Users/localhost/logs/tesla ./tesla.ba # 移动目录并重命名

cp

复制文件内容到文件

cp tmp.cc tmp.java # 拷贝tmp.cc文件内容到tmp.java

echo

标准输出内容,常用来打印变量,文本内容。

head

展示文件内容前n行,n不设置默认为10。

head test.txt # 默认展示前10行

head -n20 test.txt # 展示前20行

head -c30 test.txt # 展示前30个字符

tail

与head相反,从尾部开始展示文本。

tail -f test.txt # 循环读取

tail -f —pid=PID # 进程ID,PID死掉后结束循环读取

head,tail,more,less常用作查看日志。

more

流式读取文件,而不像cat一样全部读取到内存,显示满屏。仅能向前移动,支持翻页。
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉

less

与more类似,流式读取文件,支持翻页,能前后随意移动。

wc

统计文件字节数,字符数,字数,行数。
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度
wc test.txt # 显示内容依次 行数 字数 字节数 文件名
26 26 103 test.txt

wc -l test.txt # 统计行数

wc -c test.txt # 显示文件字节数

date

显示系统时间,或配置参数以指定格式输出时间。

$ date
2019年12月22日 星期日 21时28分29秒 CST

$ date ‘+%c’
日 12/22 21:28:33 2019

$ date ‘+%D’
12/22/19

$ date ‘+%T’
21:28:50

$ date ‘+%X’
21时29分00秒

cal

显示日历,多种显示方式。

which

查看系统是否存在某个命令,及执行的位置在哪。

$ which ls
alias ls=’ls —color=auto’
/bin/ls

$ which which
alias which=’alias | /usr/bin/which —tty-only —read-alias —show-dot —show-tilde’
/bin/alias
/usr/bin/which

whereis

只能用于程序名搜索,只搜索二进制

$ whereis ls
/bin/ls

$ whereis whereis
/usr/bin/whereis

nl

显示行号
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
-p 在逻辑定界符处不重新开始计算。


ps

显示进程的相关信息

ps -a # 查看所有进程

ps -ef # 环境变量和进程之间的关系

kill

杀进程,控制进程状态
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)

find

查找命令,可以使用通配符,使用频率极高。
-print:find命令将匹配的文件输出到标准输出。
-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,诸如:

  • b - 块设备文件。
  • d - 目录。
  • c - 字符设备文件。
  • p - 管道文件。
  • l - 符号链接文件。
  • f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n
24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件


grep

常用在查找日志,规则支持正则。(数据量大,用不了vim的时候用grep)

grep ‘20:[1-5][0-9]:’ *.log # 匹配当前目录下搜索log日志中,20点的日志

grep ‘20:[1-5][0-9]’ 1.log 2.log 3.log # 指定在这三个文件中查找

grep规则是支持正则表达式的

ps -ef|grep java # 查找所有java进程

ps -ef|grep java # -c可以统计查找的个数

grep ‘20:[1-5][0-9]:’ *.log | grep -v ‘20:[3-4][0-9]:’ # -v反向选择,相当于过滤

grep ‘ab|bc’ *.log # 支持|语法,匹配含有ab或者bc的文本行

cut

剪切标准输出范围内容,就是可以显示指定范围内容。
-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
—complement:补足被选择的字节、字符或字段;
—out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
cut -c-10 tmp.txt # cut tmp.txt文件的前10列

cut -c3-5 tmp.txt # cut tmp.txt文件的第3到5列

cut -c3- tmp.txt # cut tmp.txt文件的第3到结尾列

diff

比较两文件不同。
-b或—ignore-space-change 不检查空格字符的不同。
-B或—ignore-blank-lines 不检查空白行。
-c 显示全部内文,并标出不同之处。
-C或—context 与执行”-c-“指令相同。
-d或—minimal 使用不同的演算法,以较小的单位来做比较。
-D或ifdef 此参数的输出格式可用于前置处理器巨集。
-e或—ed 此参数的输出格式可用于ed的script文件。
-f或-forward-ed 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
-H或—speed-large-files 比较大文件时,可加快速度。
-l或—ignore-matching-lines 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
-i或—ignore-case 不检查大小写的不同。
-l或—paginate 将结果交由pr程序来分页。
-n或—rcs 将比较结果以RCS的格式来显示。
-N或—new-file 在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-p 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-P或—unidirectional-new-file 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-q或—brief 仅显示有无差异,不显示详细的信息。
-r或—recursive 比较子目录中的文件。
-s或—report-identical-files 若没有发现任何差异,仍然显示信息。
-S或—starting-file 在比较目录时,从指定的文件开始比较。
-t或—expand-tabs 在输出时,将tab字符展开。
-T或—initial-tab 在每行前面加上tab字符以便对齐。
-u,-U或—unified= 以合并的方式来显示文件内容的不同。
-v或—version 显示版本信息。
-w或—ignore-all-space 忽略全部的空格字符。
-W或—width 在使用-y参数时,指定栏宽。
-x或—exclude 不比较选项中所指定的文件或目录。
-X或—exclude-from 您可以将文件或目录类型存成文本文件,然后在=中指定此文本文件。
-y或—side-by-side 以并列的方式显示文件的异同之处。

tar

压缩和解压文件,tar本身不具备压缩,是调用压缩功能实现。

tar -cvf test.tar test.txt # 打包 tar -cvf 包名 文件名

tar -xvf test.tar # 解包 tar -xvf 包名

tar -czvf test.tgz test.txt # 压缩 tar -czvf 包名 文件名

tar -xzvf test.tgz # 解压 tar -xzvf 包名

du

显示文件或目录大小。

du -h filename # 查看指定文件大小

du -h / # 展示该目录下所有文件大小,大小以可读方式展示

du -sh # 展示当前目录大小

du -sh ./ # 展示当前目录下每个目录大小

du -ah / #显示所有文件的大小,以可读方式展示

df

显示系统磁盘情况。

df -h # 显示系统磁盘使用情况,可读形式

lsof

list open files,列出当前系统打开的文件。此命令常用。

lsof # 显示当前系统打开的文件

lsof /bin/bash # 查看某个文件的相关进程 lsof 文件名
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 9430 midou txt REG 253,1 960392 140072 /usr/bin/bash

lsof -u username # 查看某个用户打开的文件信息

lsof -c java # 列出某个程序进程所打开的文件信息

lsof -u ^midou # 列出除了某个用户外的被打开的文件信息

lsof -p pid # 通过某个进程号显示该进行打开的文件

lsof -p ^pid # 列出除了某个进程号,其他进程号所打开的文件信息

lsof -i # 列出所有的网络连接

lsof -i tcp # 列出所有tcp 网络连接信息

lsof -i udp # 列出所有udp网络连接信息

lsof -i :port # 列出谁在某个端口使用情况

lsof -i tcp:port # 特定的tcp端口

lsof -i udp:port # 特定的udp端口

lsof -a -u username -i # 列出某个用户的所有活跃的网络端口

lsof -d 0-2 # 根据文件描述符范围列出文件信息

ping

常用与测试本机与其他机器之间的网络通信。

ping host # 检测网络情况

ping -b host # ping网关

ping -c 10 host # ping指定次数

ping -c 10 -i 0.5 host # ping指定时间间隔和次数限制

netstat

网络状态,端口,路由表等信息相关命令。

netstat -a # 列出所有端口使用情况

netstat -nu # 显示当前UDP连接状况

netstat -apu # 显示UDP端口号的使用情况

netstat -i # 显示网卡列表

netstat -s # 显示网络统计信息

netstat -l # 显示监听的套接口

netstat -n # 显示所有已建立的有效连接

netstat -r # 显示关于路由表的信息

netstat -at # 列出所有 tcp 端口

netstat -ap | grep ssh #找出程序运行的端口

netstat -pt # 在 netstat 输出中显示 PID 和进程名称

ifconfig

显示,配置网络设备信息。

ifconfig # 显示网络设备信息

ifconfig eth0 up # 启动关闭指定网卡
ifconfig eth0 down

ifconfig eth0 ip # 配置IP地址

ifconfig eth0 arp # 启用和关闭ARP协议
ifconfig eth0 -arp

ifconfig eth0 mtu 1500 # 设置最大传输单元

hostname

主机名信息显示,和设置。

-a:显示主机别名;
-b:设置hostname
-d:显示DNS域名;
-f:显示FQDN名称;
-i:显示主机的ip地址;
-s:显示短主机名称,在第一个点处截断;
-y:显示NIS域名。

hostname -b xxx # 设置hostname为xxx

hostname -i # 查看主机ip

traceroute

检测主机之间数据包经过多少网关的工具。
-d 使用Socket层级的排错功能。
-f 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g 设置来源路由网关,最多可设置8个。
-i 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的IP地址。
-t 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。

route

-c 显示更多信息
-n 不解析名字
-v 显示详细的处理信息
-F 显示发送信息
-C 显示路由缓存
-f 清除所有网关入口的路由表。
-p 与 add 命令一起使用时使路由具有永久性。
add:添加一条新路由。
del:删除一条路由。
-net:目标地址是一个网络。
-host:目标地址是一个主机。
route # 显示当前路由

route add -net 224.0.0.0 netmask 240.0.0.0 reject # 屏蔽一条路由

route del -net 224.0.0.0 netmask 240.0.0.0 # 删除路由记录

route del default gw 192.168.0.100 # 删除和添加设置默认网关
route add default gw 192.168.0.100

wget

从web非交互式下载文件,支持http,https,ftp协议。

**

get命令参数
启动:
-V, —version 显示 Wget 的版本信息并退出。
-h, —help 打印此帮助。
-b, —background 启动后转入后台。
-e, —execute=COMMAND 运行一个“.wgetrc”风格的命令。

日志和输入文件:
-o, —output-file=FILE 将日志信息写入 FILE。
-a, —append-output=FILE 将信息添加至 FILE。
-d, —debug 打印大量调试信息。
-q, —quiet 安静模式 (无信息输出)。
-v, —verbose 详尽的输出 (此为默认值)。
-nv, —no-verbose 关闭详尽输出,但不进入安静模式。
-i, —input-file=FILE 下载本地或外部 FILE 中的 URLs。
-F, —force-html 把输入文件当成 HTML 文件。
-B, —base=URL 解析与 URL 相关的
HTML 输入文件 (由 -i -F 选项指定)。
—config=FILE Specify config file to use.

下载:
-t, —tries=NUMBER 设置重试次数为 NUMBER (0 代表无限制)。
—retry-connrefused 即使拒绝连接也是重试。
-O, —output-document=FILE 将文档写入 FILE。
-nc, —no-clobber skip downloads that would download to
existing files (overwriting them).
-c, —continue 断点续传下载文件。
—progress=TYPE 选择进度条类型。
-N, —timestamping 只获取比本地文件新的文件。
—no-use-server-timestamps 不用服务器上的时间戳来设置本地文件。
-S, —server-response 打印服务器响应。
—spider 不下载任何文件。
-T, —timeout=SECONDS 将所有超时设为 SECONDS 秒。
—dns-timeout=SECS 设置 DNS 查寻超时为 SECS 秒。
—connect-timeout=SECS 设置连接超时为 SECS 秒。
—read-timeout=SECS 设置读取超时为 SECS 秒。
-w, —wait=SECONDS 等待间隔为 SECONDS 秒。
—waitretry=SECONDS 在获取文件的重试期间等待 1..SECONDS 秒。
—random-wait 获取多个文件时,每次随机等待间隔
0.5WAIT…1.5WAIT 秒。
—no-proxy 禁止使用代理。
-Q, —quota=NUMBER 设置获取配额为 NUMBER 字节。
—bind-address=ADDRESS 绑定至本地主机上的 ADDRESS (主机名或是 IP)。
—limit-rate=RATE 限制下载速率为 RATE。
—no-dns-cache 关闭 DNS 查寻缓存。
—restrict-file-names=OS 限定文件名中的字符为 OS 允许的字符。
—ignore-case 匹配文件/目录时忽略大小写。
-4, —inet4-only 仅连接至 IPv4 地址。
-6, —inet6-only 仅连接至 IPv6 地址。
—prefer-family=FAMILY 首先连接至指定协议的地址
FAMILY 为 IPv6,IPv4 或是 none。
—user=USER 将 ftp 和 http 的用户名均设置为 USER。
—password=PASS 将 ftp 和 http 的密码均设置为 PASS。
—ask-password 提示输入密码。
—no-iri 关闭 IRI 支持。
—local-encoding=ENC IRI (国际化资源标识符) 使用 ENC 作为本地编码。
—remote-encoding=ENC 使用 ENC 作为默认远程编码。
—unlink remove file before clobber.

目录:
-nd, —no-directories 不创建目录。
-x, —force-directories 强制创建目录。
-nH, —no-host-directories 不要创建主目录。
—protocol-directories 在目录中使用协议名称。
-P, —directory-prefix=PREFIX 以 PREFIX/… 保存文件
—cut-dirs=NUMBER 忽略远程目录中 NUMBER 个目录层。

HTTP 选项:
—http-user=USER 设置 http 用户名为 USER。
—http-password=PASS 设置 http 密码为 PASS。
—no-cache 不在服务器上缓存数据。
—default-page=NAME 改变默认页
(默认页通常是“index.html”)。
-E, —adjust-extension 以合适的扩展名保存 HTML/CSS 文档。
—ignore-length 忽略头部的‘Content-Length’区域。
—header=STRING 在头部插入 STRING。
—max-redirect 每页所允许的最大重定向。
—proxy-user=USER 使用 USER 作为代理用户名。
—proxy-password=PASS 使用 PASS 作为代理密码。
—referer=URL 在 HTTP 请求头包含‘Referer: URL’。
—save-headers 将 HTTP 头保存至文件。
-U, —user-agent=AGENT 标识为 AGENT 而不是 Wget/VERSION。
—no-http-keep-alive 禁用 HTTP keep-alive (永久连接)。
—no-cookies 不使用 cookies。
—load-cookies=FILE 会话开始前从 FILE 中载入 cookies。
—save-cookies=FILE 会话结束后保存 cookies 至 FILE。
—keep-session-cookies 载入并保存会话 (非永久) cookies。
—post-data=STRING 使用 POST 方式;把 STRING 作为数据发送。
—post-file=FILE 使用 POST 方式;发送 FILE 内容。
—content-disposition 当选中本地文件名时
允许 Content-Disposition 头部 (尚在实验)。
—auth-no-challenge 发送不含服务器询问的首次等待
的基本 HTTP 验证信息。

HTTPS (SSL/TLS) 选项:
—secure-protocol=PR 选择安全协议,可以是 auto、SSLv2、
SSLv3 或是 TLSv1 中的一个。
—no-check-certificate 不要验证服务器的证书。
—certificate=FILE 客户端证书文件。
—certificate-type=TYPE 客户端证书类型,PEM 或 DER。
—private-key=FILE 私钥文件。
—private-key-type=TYPE 私钥文件类型,PEM 或 DER。
—ca-certificate=FILE 带有一组 CA 认证的文件。
—ca-directory=DIR 保存 CA 认证的哈希列表的目录。
—random-file=FILE 带有生成 SSL PRNG 的随机数据的文件。
—egd-file=FILE 用于命名带有随机数据的 EGD 套接字的文件。

FTP 选项:
—ftp-user=USER 设置 ftp 用户名为 USER。
—ftp-password=PASS 设置 ftp 密码为 PASS。
—no-remove-listing 不要删除‘.listing’文件。
—no-glob 不在 FTP 文件名中使用通配符展开。
—no-passive-ftp 禁用“passive”传输模式。
—retr-symlinks 递归目录时,获取链接的文件 (而非目录)。

递归下载:
-r, —recursive 指定递归下载。
-l, —level=NUMBER 最大递归深度 (inf 或 0 代表无限制,即全部下载)。
—delete-after 下载完成后删除本地文件。
-k, —convert-links 让下载得到的 HTML 或 CSS 中的链接指向本地文件。
-K, —backup-converted 在转换文件 X 前先将它备份为 X.orig。
-m, —mirror -N -r -l inf —no-remove-listing 的缩写形式。
-p, —page-requisites 下载所有用于显示 HTML 页面的图片之类的元素。
—strict-comments 用严格方式 (SGML) 处理 HTML 注释。

递归接受/拒绝:
-A, —accept=LIST 逗号分隔的可接受的扩展名列表。
-R, —reject=LIST 逗号分隔的要拒绝的扩展名列表。
-D, —domains=LIST 逗号分隔的可接受的域列表。
—exclude-domains=LIST 逗号分隔的要拒绝的域列表。
—follow-ftp 跟踪 HTML 文档中的 FTP 链接。
—follow-tags=LIST 逗号分隔的跟踪的 HTML 标识列表。
—ignore-tags=LIST 逗号分隔的忽略的 HTML 标识列表。
-H, —span-hosts 递归时转向外部主机。
-L, —relative 只跟踪有关系的链接。
-I, —include-directories=LIST 允许目录的列表。
—trust-server-names use the name specified by the redirection
url last component.
-X, —exclude-directories=LIST 排除目录的列表。
-np, —no-parent 不追溯至父目录。

vmstat

报告系统进程,内存,页面调度,块IO,陷阱,磁盘,cpu活动信息。
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
vmstat 3 3 # 表示在3秒时间内进行3次采样。将得到一个数据汇总他能够反映真正的系统情况。

vmstat -f # 查看系统fork多少次

vmstat -s # 查看内存使用的详细信息

vmstat -d # 查看磁盘的读/写

vmstat -m # 查看系统的slab信息

vmstat -Sm # 以M为单位显示信息

procs —————-memory————— —-swap— ——-io—— -system— ———cpu——-
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 196 125 822 0 0 0 5 1 2 0 0 100 0 0

Procs(进程):
r: 运行队列中进程数量
b: 等待IO的进程数量
Memory(内存):
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap:
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数
bo: 每秒写入的块数
系统:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
CPU(以百分比表示):
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
wa: 等待IO时间

free

显示系统内存,缓存相关信息。

free -s 5 # 周期性的查询内存使用信息,5s执行一次

free # 显示内存使用情况
total used free shared buff/cache available
Mem: 65808884 4582700 23754736 684 37471448 60913052

free -h # 自适应单位显示
total used free shared buff/cache available
Mem: 62G 4.4G 22G 684K 35G 58G
Swap: 0B 0B 0B

top

显示系统的进程或线程列表信息,类似window任务管理器。
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
信息头参数含义:
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 — 进程名称(命令名/命令行)

sar

系统性能分析工具,可报告系统各项指标。
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息