🎃 Linux常用命令

吞佛童子2022年6月9日
  • os
  • linux
大约 9 分钟

🎃 Linux常用命令

1. 文件操作

1) 查看状态

ls -a

  • 列出当前目录下的所有文件,包括以 "." 开头的隐含文件

img.png

ll

  • 显示当前文件或目录的详细信息,含有时间、读写权限、大小、时间等信息

img_1.png

pwd

  • 查看当前路径

img_11.png

chmod

  • 修改当前用户对文件的权限,文件的所有者才可以修改其权限,root 用户超越所有用户可对任意文件修改其权限
    • +增加权限
    • - 取消权限
    • r 对于文件可读取;对于目录,可浏览目录及其子目录
    • w 对于文件,可修改文件内容;对于目录,可增删目录内文件
    • x 对于文件,可执行;对于目录,可访问文件内容
  • 权限的整体划分
    • 文件属性
      • 目录 d
      • 普通文件 -
      • 链接 l
    • 所有者权限
      • r 可读
      • w 可写
      • x 可执行
    • 群组用户权限
    • 其他用户权限
    • drwx-rx-x
  • 权限对应的数字
    • r 4
    • w 2
    • x 1
    • 例:3 == w + x; 5 = r + x; 6 = r + w; 7 = r + w + x
  • 举例: chmod 640 hello.c
    • 修改 hello.c 文件的权限
      • 所有者权限为 r + w
      • 群组用户权限为 r
      • 其他用户没有任何权限
  • 举例: chmod +x hello.c
    • 给文件添加 可执行 权限

grep [-n] "..." filename

  • 在某个文件下 查找 指定 内容
  • -n 在查找到内容所在行时,同时输出 该行的行号

2) 文件夹

cd

  • 切换目录
  • cd .. 表示切换到上一级目录

img_8.png

mikdir

  • 在当前路径下创建目录
  • 加上 -p 参数后若不存在该目录,则递归创建多级目录

img_2.png

rm -rf

  • 删除目录及其下所有文件,且不会出现是否确认删除提示

find . -name "..." -type "..."

  • 在 某个目录下 查找 指定名称 & 指定类型 的文件
    • find . -name "hello.c
  • type -d 目录
  • type -l 连接
  • type -s socket 文件

3) 文件

touch

  • 将每个文件的修改时间更新为当前时间
  • 若不存在该文件,则创建
  • 加上 -c 参数后,若不存在该文件,则不会进行创建

img_5.png

vi

  • 修改文件内容
  • 操作:
    • vim 进入交互模式
      • 该模式下,无法输入文本,但可以在文本之间移动
      • 快速定位到 首行,有以下几种方式:
        • 0 or 1 + Enter
        • gg
      • 快速定位到 最后一行,有以下 几种方式:
        • $ + Enter
        • G
        • shift + g
    • i 进入修改模式
      • 修改想要修改的部分
    • Esc 退出修改
    • :wq 命令模式,执行 保存并退出 操作
      • :q! 执行 不保存并退出 操作
    • Enter 执行完毕

img_3.png

img_4.png

cat

  • 查看文件全部内容

img_6.png

more

  • 流式读取
  • 空格键向下翻页;Ctrl+B 返回上一页
  • 读整个文件,加载速度会比 less 慢

img_7.png

less

  • 流式读取
  • less 不必读整个文件,加载速度 会比 more 更快
  • 按键盘上下方向键显示上下内容
  • 通过 /str 提供字符串检索功能,匹配到的字符串 高亮 显示

head

  • 查看文件前几行,默认 10
  • 添加 -c 参数可指定展示前几个字符
  • 添加 -n 参数可指定展示前几行

img_12.png

tail

  • 查看文件后几行,默认 10
  • 添加 -c 参数可指定展示前几个字符
  • 添加 -n 参数可指定展示前几行

img_13.png

rm

  • 删除文件

img_9.png

cp

  • 复制文件到另一个文件
  • 如果不存在 target 文件,则自动创建

img_10.png


2. 计算机状态

1) 综合功能

top

  • 提供正在运行的系统的动态实时视图
    • top 行:
      • 当前系统时间
      • 系统已经运行了 - 天 - 小时 - 分钟(在这期间系统没有重启过的)
      • 当前有1个用户登录系统
      • load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况
    • Tasks 行:
      • total
      • running
      • sleeping
      • stopped
      • zombie 僵尸进程
    • %Cpu(s) 行:
      • us 用户空间占用CPU的百分比
      • sy 内核空间占用CPU的百分比
      • ni 改变过优先级的进程占用CPU的百分比
      • id 空闲CPU百分比
      • wa IO等待占用CPU的百分比
      • hi 硬中断(Hardware IRQ)占用CPU的百分比
      • si 软中断(Software Interrupts)占用CPU的百分比
      • st 虚拟 CPU 等待实际 CPU 的时间的百分比
    • MiB Mem 行:
      • total 物理内存总量
      • free 空闲的内存总量
      • used 使用中的内存总量
      • buff/cache 缓存的内存量
    • MiB Swap 行:
      • total 交换区总量
      • use 使用的交换区总量
      • free 空闲交换区总量
      • avail Mem 可用交换区总量
    • 表格:
      • PID 进程id
      • USER 进程所有者
      • PR 进程优先级
      • NI nice值, 负值表示高优先级,正值表示低优先级
      • VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
      • RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
      • SHR 共享内存大小,单位kb
      • S 进程状态
      • %CPU 上次更新到现在的CPU时间占用百分比
      • %MEM 进程使用的物理内存百分比
      • TIME+ 进程使用的CPU时间总计,单位1/100秒
      • COMMAND 进程名称(命令名/命令行)

img_21.png

  • CPU 负载
    • 正在执行 | 等待 的进程数
    • 假设当前只有 1 个活动室,有一个人已经在使用,这时候负载就是1,如果还有一个人在排队,那么负载就是2。
    • 若 CPU 核数为 2,那么超过 2 后的进程需要等待
    • 查看 CPU 核数:
      • img.png
  • CPU 利用率
    • 当前 正在运行的进程实时占用CPU的百分比
    • 如果在1个小时内,A 用了 10 分钟活动室,B 用了 20 分钟活动室,剩下 30 分钟活动室均没人使用,那么这一个小时内利用率为 50%
  • CPU 负载高 但 CPU 利用率低
    • 说明 等待的进程过多,处理完成的很少,导致队列中等待处理的任务数很多
    • 可能存在 僵尸进程,或 很多 IO 密集型任务
      • 磁盘读写请求过多
      • MySQL 查询一次需要的数据量特别大时
      • 外接硬盘故障,导致一直在和其进行 IO 请求
  • CPU 利用率高 但 CPU 负载低
    • 说明几乎没有等待的任务,所有任务几乎都在运行
    • 如果是正常情况,则说明是 计算密集型任务;若不是正常情况,说明是 程序代码有问题,需要定位到 利用率高的程序,然后排查问题
  • CPU 利用率达到 100%,如何排查
    • top 在当前进程运行列表中找到 CPU 利用率最高的进程 pid
      • default 按照 CPU 利用率由高到低 排序
    • top -Hp pid 找出当前进程 pid 下面 CPU 消耗最高的线程 tid
      • -H 表示以线程的维度展示,默认以进程维度展示
    • printf "0x%x\n" tidtid 十进制转换为 16进制,例 0xab,方便后续快速定位到 当前线程
    • jstack pid > ./pid.log 生成 进程 pid 堆栈快照
    • cat pid.log | grep 0xab 查看 pid 下 0xab 线程 的情况

vmstat

  • 报告有关进程,内存,页面调度,块IO,陷阱,磁盘和cpu活动的信息
  • pros
    • r 运行队列中进程数量
    • b 等待IO的进程数量
  • memory
    • swpd 使用虚拟内存大小
    • free 空闲内存大小
    • buff 用作缓冲的内存大小
    • cache 用作缓存的内存大小
  • swap
    • si 每秒从交换区写到内存的大小
    • so 每秒写入交换区的内存大小
  • io
    • bi 每秒读取的块数
    • bo 每秒写入的块数
  • system
    • in 每秒中断数,包括时钟中断
    • cs 每秒上下文切换数
  • cpu [百分比]
    • us 用户进程执行时间(user time)
    • sy 系统进程执行时间(system time)
    • id 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
    • wa 等待IO时间

img_19.png

2) 内存

free -h

  • 以合适的方式表示系统中可用和可用的物理内存和交换内存的总量,以及内核使用的缓冲区和高速缓存
    • total 总计物理内存的大小
    • used 已经被使用的物理内存和交换空间
    • free 未被分配的内存
    • shared 共享使用的物理内存大小
    • buff/cache buffer 和 cache 使用的物理内存大小
    • available 当前剩余实际可用内存(还可以被应用程序使用的物理内存大小)

img_20.png

3) 磁盘

df -hl

  • 查看磁盘空间
  • -h 方便阅读方式显示
  • -l 只显示本地文件系统

img_15.png

4) 进程

ps -a

  • 显示所有进程,是一个进程快照

img_14.png


3. 网络相关

ping

img_16.png

ifconfig -a

  • 显示全部接口信息

img_18.png

netstat -napt

  • 查看 哪些端口被占用
    • netstat -nap
  • 查看 哪个端口具体被哪个程序占用
    • lsof -i :port
  • 查看网络相关信息
  • -n 拒绝显示别名,能显示数字的全部转换为数字
  • -a 显示所有连线中的Socket
  • -p 显示建立相关连接的程序名
  • -t 显示TCP传输协议的连线状况
  • -l 只显示 Listen 状态下的网络

img_17.png

ss -npt

  • ss 的性能必 netstat 要好,在网络繁忙的情况下,例生产环境,建议使用 ss
  • -n 拒绝显示别名,能显示数字的全部转换为数字
  • -p 显示建立相关连接的程序名
  • -t 只显示TCP传输协议的连线状况
  • -l 只显示 Listen 状态下的网络
上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou