备份压缩相关命令
Linux 命令学习(2)-文件管理相关命令
@(笔记-初稿)[Linux]
[TOC]
记录我对于Linux的学习,系统相关的命令:
ps:“~” 表示为 home 目录,“.” 则是表示目前所在的目录,“…” 则表示当前目录的上一层目录
-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
uptime
uptime 打印系统总共运行了多长时间和系统的平均负载
用法: uptime [选项]
选项:
- -p, --pretty show uptime in pretty format
- -h, --help 显示此帮助然后离开
- -s, --since system up since
- -V, --version 显示程序版本然后离开
1 | uptime |
1 | 22:15:57 //系统当前时间 |
ps:系统平均负载是指运行时间内系统处于可运行与不可中断状态(比如等待disk IO)的平均进程数。
free
free 用于显示内存状态,包括物理内存、交换内存(swap)和内核缓冲区内存
用法: free [选项]
选项:
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
- -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。
- o 不显示缓冲区调节列。
- -s<间隔秒数> 持续观察内存使用状况。
- -t 显示内存总和列。
- -V 显示版本信息。
1 | free |
1 | Mem 一行指的是内存的使用情况 |
不过在新的内核中,free命令的输出发生了变化,比如:
1 | free |
1 | 没有了-/+ buffers/cache,并且buff/cache列合并了 |
vmstat
vmstat 显示虚拟内存状态(“Virtual Memory Statistics”)的统计信息,但是它可以报告关于进程、内存、I/O等系统整体运行状态
用法: vmstat [选项]
- -a 显示活动内页;
- -f 显示启动后创建的进程总数;
- -m 显示slab信息;
- -n 头信息仅显示一次;
- -s 以表格方式显示事件计数器和内存状态;
- -d 报告磁盘状态;
- -p 显示指定的硬盘分区状态;
- -S 输出信息的单位。
- -t 在每行增加时间辍
- -w 宽频显示
1 | vmstat |
1 | 在vm模式中 |
pidstat
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标,还可以看线程的信息。
用法: pidstat [选项]
常用选项:
- -d 展示磁盘 I/O 统计数据
- -R 报告实时优先级和调度策略信息
- -r 显示内存使用情况
- -s 显示栈相关信息
- -t 查看线程相关的信息,默认是进程的;与其他命令结合可以查看线程相关的信息
- -u 各个进程的cpu使用统计 默认参数
- -w 表示查看上下文切换情况
- -p 指定进程id
cpu 统计信息
1 | pidstat -p 1 #显示进程1的 cpu 统计信息 |
- %usr 用户空间的cpu使用率
- system 内核空间的cpu使用率
- %guest 进程在虚拟机占用cpu的百分比
- %wait 等待上下文切换的cpu使用率
- %CPU 总的cpu使用率
- CPU 处理进程的cpu编号
- Command 当前进程对应的命令
磁盘 I/O 统计数据
1 | pidstat -d -p 1 |
- kB_rd/s 每秒从磁盘读取的KB
- kB_wr/s 每秒写入磁盘KB
- kB_ccwr/s 任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生
- iodelay 表示 I/O 的延迟(单位是时钟周期)
- Command 当前进程对应的命令
cpu 上下文切换
vmstat只能查看总的cpu上下文切换,pidstat可以查看每个进程的上下文切换
1 | pidstat -w -p 1 |
- cswch/s 每秒自愿上下文切换(voluntary context switches)的次数
- nvcswch/s 每秒非自愿上下文切换(non voluntary context switches)的次数
ps:
- 自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换
- 非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换
内存信息
1 | pidstat -r -p 1 |
- minflt/s 任务每秒发生的次要错误,不需要从磁盘中加载页
- majflt/s 务每秒发生的主要错误,需要从磁盘中加载页
- VSZ 虚拟地址大小,虚拟内存的使用KB
- RSS 常驻集合大小,非交换区五里内存使用KB
- %MEM 使用的物理内存占比
查看线程相关信息
以查看 cpu 上下文切换为例,查看线程相关信息
1 | pidstat -wt -p 541859 |
- TGID 线程组ID,也就是线程组leader的进程ID,等于pid
- TID 线程ID
ps: pidstat 只能看到进程(也就是主线程)的信息,如果要仔细分析,还需要查看线程的相关信息。
top
top 用来监控Linux系统状况,比如cpu、内存的使用等
用法: top [选项]
常用选项:
选项:
- -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
- -b 使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
- -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
- -p 进程PID:仅查看指定 ID 的进程;
- -s 使 top 命令在安全模式中运行,避免在交互模式中出现错误;
- -u 用户名:只监听某个用户的进程;
在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:
- ? 或 h:显示交互模式的帮助;
- P:按照 CPU 的使用率排序,默认就是此选项;
- M:按照内存的使用率排序;
- N:按照 PID 排序;
- T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
- k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
- r:按照 PID 给某个进程重设优先级(Nice)值;
- q:退出 top 命令;
以下时top命令的输出:
1 | top - 20:42:01 up 4 days, 3:52, 3 users, load average: 0.93, 1.26, 1.45 |
1~5行显示的系统整体信息:
- 第一行显示内容与uptime一样
- 第二行为进程信息
- 任务: 315 total 系统中的进程总数
- 1 running 正在运行的进程数
- 312 sleeping 睡眠的进程数
- 0 stopped 正在停止的进程数
- 2 zombie 僵尸进程数。如果不是 0,则需要手工检查僵尸进程
- 第三行为 CPU 信息 19.0 us, 5.6 sy, 0.0 ni, 72.8 id, 1.5 wa, 0.9 hi, 0.2 si, 0.0 st
- %Cpu(s): 19.0 us 用户模式占用的 CPU 百分比
- 5.6 sy 系统模式占用的 CPU 百分比
- 0.0 ni 改变过优先级的用户进程占用的 CPU 百分比
- 72.8 id 空闲 CPU 占用的 CPU 百分比
- 1.5 wa 等待输入/输出的进程占用的 CPU 百分比
- 0.9 hi 硬中断请求服务占用的 CPU 百分比
- 0.2 si 软中断请求服务占用的 CPU 百分比
- 0.0 st st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比
- 第四行为物理内存信息 单位 MiB
- 48128.1 total 物理内存的总量
- 27592.0 free 空闲的物理内存数量
- 15048.8 used 已使用的物理内存数量
- 5487.2 buff/cache 作为缓冲的内存数量
- 第五行为交换分区(swap)信息 单位 MiB
- 32768.0 total 交换分区的总大小
- 30745.9 free 空闲交换分区的大小
- 2022.1 used. 已经使用的交换分区的大小
- 31456.8 avail Mem 可使用的交换分区大小
从第6行开始,显示的是系统中进程的信息:
- PID 进程的 ID。
- USER 该进程所属的用户。
- PR 优先级,数值越小优先级越高。
- NI 优先级,数值越小、优先级越高。
- VIRT 该进程使用的虚拟内存的大小,单位为 KB。
- RES 该进程使用的物理内存的大小,单位为 KB。
- SHR 共享内存大小,单位为 KB。
- S 进程状态。
- %CPU 该进程占用 CPU 的百分比。
- %MEM 该进程占用内存的百分比。
- TIME+ 该进程共占用的 CPU 时间。
- COMMAND 进程的命令名。
这只是默认显示的信息,top可显示的信息还有很多,可以使用快捷键切换。
还可以使用htop,可以说是top的增强版本。
ps
ps 显示了每个进程的资源使用情况
用法: ps [options]
不过因为历史原因,在不同的Linux系统还有Unix系统上,ps的命令语法各不相同,所以目前的ps命令融合了不同派系的使用方法,ps命令支持三种使用的语法格式
- UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符
- BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符
- GNU 风格的长选项,选项前有两个“-”连字符
一般情况下可以混用,但是可能会有冲突
常用选项:
- -a 显示所有当前进程
- -e 显示系统所有进程
- -u 后接euid或name 显示指定用户的进程
- -l:长格式显示更加详细的信息
- -f 格式化信息列表
- a 在BSD风格下,显示自己的进程
- x 在BSD风格下,显示没有控制终端的进程
- u 显示进程的归属用户及内存的使用情
从上面的描述我们能看到 aux
与 -aux
这两种参数组合的意义完全不同,在man文档中有如下描述:
1 | Note that “ps -aux” is distinct from “ps aux”. The POSIX and UNIX standards require that “ps -aux” print all processes owned by a user named “x”, as well as printing all processes that would be selected by the -a option. If the user named “x” does not exist, this ps may interpret the command as “ps aux” instead and print a warning. |
1 | ps #默认情况 |
结果默认会显示4列信息。
PID: 运行着的命令(CMD)的进程编号
TTY: 命令所运行的位置(终端)
TIME: 运行着的该命令所占用的CPU处理时间
CMD: 该进程所运行的命令
1 | #显示用户进程 标准风格: |