🎃 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 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
- 其他用户没有任何权限
- 修改 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 -s
socket 文件
3) 文件
touch
- 将每个文件的修改时间更新为当前时间
- 若不存在该文件,则创建
- 加上
-c
参数后,若不存在该文件,则不会进行创建
vi
- 修改文件内容
- 操作:
vim
进入交互模式- 该模式下,无法输入文本,但可以在文本之间移动
- 快速定位到 首行,有以下几种方式:
0 or 1
+ Entergg
- 快速定位到 最后一行,有以下 几种方式:
$
+ EnterG
shift + 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 行:
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
进程idUSER
进程所有者PR
进程优先级NI
nice值, 负值表示高优先级,正值表示低优先级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活动的信息
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时间
2) 内存
free -h
- 以合适的方式表示系统中可用和可用的物理内存和交换内存的总量,以及内核使用的缓冲区和高速缓存
total
总计物理内存的大小used
已经被使用的物理内存和交换空间free
未被分配的内存shared
共享使用的物理内存大小buff/cache
buffer 和 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
状态下的网络