🎃 Linux常用命令
2022年6月9日
- os
🎃 Linux常用命令
1. 文件操作
1) 查看状态
ls -a
- 列出当前目录下的所有文件,包括以 "." 开头的隐含文件
ll
- 显示当前文件或目录的详细信息,含有时间、读写权限、大小、时间等信息

pwd
- 查看当前路径
chmod
- 修改当前用户对文件的权限,文件的所有者才可以修改其权限,
root用户超越所有用户可对任意文件修改其权限+增加权限-取消权限r对于文件可读取;对于目录,可浏览目录及其子目录w对于文件,可修改文件内容;对于目录,可增删目录内文件x对于文件,可执行;对于目录,可访问文件内容
- 权限的整体划分
- 文件属性
- 目录
d - 普通文件
- - 链接
l
- 目录
- 所有者权限
r可读w可写x可执行
- 群组用户权限
- 其他用户权限
- 例
drwx-rx-x
- 文件属性
- 权限对应的数字
r 4w 2x 1- 例:3 == w + x; 5 = r + x; 6 = r + w; 7 = r + w + x
- 举例:
chmod 640 hello.c- 修改 hello.c 文件的权限
- 所有者权限为 r + w
- 群组用户权限为 r
- 其他用户没有任何权限
- 修改 hello.c 文件的权限
- 举例:
chmod +x hello.c- 给文件添加 可执行 权限
grep [-n] "..." filename
- 在某个文件下 查找 指定 内容
-n在查找到内容所在行时,同时输出 该行的行号
2) 文件夹
cd
- 切换目录
cd ..表示切换到上一级目录

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

rm -rf
- 删除目录及其下所有文件,且不会出现是否确认删除提示
find . -name "..." -type "..."
- 在 某个目录下 查找 指定名称 & 指定类型 的文件
find . -name "hello.c
type -d目录type -l连接type -ssocket 文件
3) 文件
touch
- 将每个文件的修改时间更新为当前时间
- 若不存在该文件,则创建
- 加上
-c参数后,若不存在该文件,则不会进行创建

vi
- 修改文件内容
- 操作:
vim进入交互模式- 该模式下,无法输入文本,但可以在文本之间移动
- 快速定位到 首行,有以下几种方式:
0 or 1+ Entergg
- 快速定位到 最后一行,有以下 几种方式:
$+ EnterGshift + g
i进入修改模式- 修改想要修改的部分
Esc退出修改:wq命令模式,执行 保存并退出 操作:q!执行 不保存并退出 操作
Enter执行完毕
cat
- 查看文件全部内容
more
- 流式读取
空格键向下翻页;Ctrl+B返回上一页- 读整个文件,加载速度会比 less 慢
less
- 流式读取
- less 不必读整个文件,加载速度 会比 more 更快
- 按键盘上下方向键显示上下内容
- 通过
/str提供字符串检索功能,匹配到的字符串 高亮 显示
head
- 查看文件前几行,默认
10行 - 添加
-c参数可指定展示前几个字符 - 添加
-n参数可指定展示前几行

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

rm
- 删除文件
cp
- 复制文件到另一个文件
- 如果不存在 target 文件,则自动创建

2. 计算机状态
1) 综合功能
top
- 提供正在运行的系统的动态实时视图
- top 行:
- 当前系统时间
- 系统已经运行了 - 天 - 小时 - 分钟(在这期间系统没有重启过的)
- 当前有1个用户登录系统
- load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况
- Tasks 行:
totalrunningsleepingstoppedzombie僵尸进程
- %Cpu(s) 行:
us用户空间占用CPU的百分比sy内核空间占用CPU的百分比ni改变过优先级的进程占用CPU的百分比id空闲CPU百分比waIO等待占用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进程idUSER进程所有者PR进程优先级NInice值, 负值表示高优先级,正值表示低优先级VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESRES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATASHR共享内存大小,单位kbS进程状态%CPU上次更新到现在的CPU时间占用百分比%MEM进程使用的物理内存百分比TIME+进程使用的CPU时间总计,单位1/100秒COMMAND进程名称(命令名/命令行)
- top 行:

- CPU 负载
- 正在执行 | 等待 的进程数
- 假设当前只有 1 个活动室,有一个人已经在使用,这时候负载就是1,如果还有一个人在排队,那么负载就是2。
- 若 CPU 核数为 2,那么超过 2 后的进程需要等待
- 查看 CPU 核数:
- 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" tid将tid十进制转换为 16进制,例 0xab,方便后续快速定位到 当前线程jstack pid > ./pid.log生成 进程pid堆栈快照cat pid.log | grep 0xab查看pid下 0xab 线程 的情况
vmstat
- 报告有关进程,内存,页面调度,块IO,陷阱,磁盘和cpu活动的信息
prosr运行队列中进程数量b等待IO的进程数量
memoryswpd使用虚拟内存大小free空闲内存大小buff用作缓冲的内存大小cache用作缓存的内存大小
swapsi每秒从交换区写到内存的大小so每秒写入交换区的内存大小
iobi每秒读取的块数bo每秒写入的块数
systemin每秒中断数,包括时钟中断cs每秒上下文切换数
cpu[百分比]us用户进程执行时间(user time)sy系统进程执行时间(system time)id空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。wa等待IO时间

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

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

4) 进程
ps -a
- 显示所有进程,是一个进程快照
3. 网络相关
ping

ifconfig -a
- 显示全部接口信息

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

ss -npt
ss的性能必netstat要好,在网络繁忙的情况下,例生产环境,建议使用ss-n拒绝显示别名,能显示数字的全部转换为数字-p显示建立相关连接的程序名-t只显示TCP传输协议的连线状况-l只显示Listen状态下的网络
