1. 终端指令
1.1 查找
1.1.1 查找确定的文件及位置
参考一 参考二
1.1.1.1 find指令
- find命令是一个实时查找工具,通过遍历指定路径而完成对文件的查找;
- 在使用该命令时,如果不选定参数,则在当前目录下查找子目录与文件并显示之;
- 另外,任何位于参数之前的字符串,都将视为欲查找的目录名。
- 由于是实时遍历查找,find有如下特性:精确实时查找,速度慢可能只搜索用户具备读取和执行权限的目录。
语法
- find [OPTION]... [查找路径] [查找条件] [处理动作]
复制代码
举例:
它会显示出搜索路径下所有匹配文件名的路径,在这里它显示了根目录所有名称为g2o的路径。
1.1.1.2 locate指令
简介
- locate命令可以在搜寻数据库时快速找到档案,locate为模糊查找
- 数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的
- locate所找到的若是最近才建立或 刚更名的,可能会找不到
- 在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)
- 在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
命令格式:
参数
命令参数:
- -e 将排除在寻找的范围之外。
- -1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
- -f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
- -q 安静模式,不会显示任何错误讯息。
- -n 至多显示 n个输出。
- -r 使用正规运算式 做寻找的条件。
- -o 指定资料库存的名称。
- -d 指定资料库的路径
- -h 显示辅助讯息
- -V 显示程式的版本讯息
实例
1.1.1.3 whereis
背景
- whereis 命令只能用户程序名称的搜索,只搜
- 二进制文件(参数-b)
- man说明文件(参数-m)
- 源代码文件(参数-s).
- 如果省略参数,则返回所有信息。
*和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。
但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
- -b: 只找二进制格式的文件
- -m: 只找在说明文件manual 路劲下的文件
- -s: 只找source 源文件
- -u: 查找不在上述三个选项中的其他特殊文件
实例
查询ifconfig文件名
1.1.1.4 文件名
它不仅会像find显示出g2o文件路径,还会显示包含g2o文本的文件路径。
1.1.2 查找大于阈值的文件
参考
1.2.2.1 直接查找
find命令可以用于查找大于1GB的文件,可以使用 -size 选项结合 + 参数。以下是一个示例:
- find /path/to/search -type f -size +1G
复制代码
命令参数:
/path/to/search:替换成你要搜索的目录的实际路径。
- -type f:表示只查找文件,不包括目录。
- -size +1G:表示查找大于1GB的文件。如果要查找精确的1GB文件,可以使用 -size 1G。
请注意,在某些系统上,+1G 可能需要用引号括起来,如 '+1G',以防止 shell 对其进行解释。
1.2.2.2 显示大小
参考
只想要查找超过1G大小文件,并显示查找出来文件的具体大小,可以使用下面命令
- find /path/to/search -type f -size +1G -print0 | xargs -0 du –h
复制代码
1.2 系统信息显示
1.2.1 查看内存占用和查看cpu
参考一
1.2.1.1 top 法
- 终端指令打印
- 想看到相关 cpu核数,以及相关占用情况,按数字"1"即可.
- 按q退出
1.2.1.2 使用htop(推荐)
- 安装
- sudo apt-get install htop
复制代码 - 命令行输入
| 参数 | 值 | 解释 |
|---|
| 1 | 15.8% | CPU1的占用百分比 |
| Mem | XX/XXG | 内存的使用量与总量 |
| Swp | 0K/0K | 交换分区的使用量与总量 |
| 参数 | 解释 |
|---|
| 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 | 进程名称(命令名/命令行) |
1.2.1.3 iftop 监控网络流量
iftop 类似于 top,但它主要不是检查 cpu 的使用率而是监听所选择网络接口的流量。
1.2.1.4 jnettop
作用:jnettop 以相同的方式来监测网络流量但比 iftop 更形象。它还支持自定义的文本输出,并能以友好的交互方式来深度分析日志。
运行:sudo jnettop
1.3 查看文件移动进度
1.3.1 iotop
参考1
iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。
相比其他工具而言,例如Linux下的I/O统计工具如iostat,nmon等大多数只能统计到per设备的读写情况,如果你想知道每个进程是如何使用I/O的就比较麻烦,使用iotop命令可以很方便的查看。
安装
使用
2. 统计
参考
2.1 统计文件数量
1、统计当前目录下文件的个数(不包括目录)
- ls -l | grep "^-" | wc -l
复制代码
2、统计当前目录下文件的个数(包括子目录)
- ls -lR| grep "^-" | wc -l
复制代码
3、查看某目录下文件夹(目录)的个数(包括子目录)
- ls -lR | grep "^d" | wc -l
复制代码
4、统计当前文件夹下叫某某的文件的数量
- find . -name filename | wc -l
复制代码
5、统计当前文件夹下指定类型的文件的数量
- #例如这里需要找 js 文件的数量:
- find -name "*.js" | wc -l
复制代码
3. 软连接
3.1 创建软连接
3.2 删除
- 软链接地址最后不能含有“/”,当含有“/”时,删除的是软链接目标目录下的资源,而不是软链接本身
3.3 修改
2. vim常用指令
1. 文本的第一行或者最后一行
- 跳转到第一行
- 跳转到最后一行
- 跳到某一行
2. 移动到行首或者行尾
2.1 行首
- 方法一:移到第一个字符
注意,不要加入:,直接在esc后输入命令
2.2 行尾
在esc模式下,直接输入
2. 插入、复制、删除
参考一
2.1 复制
复制的命令是y,即yank(提起) ,常用的命令如下:
- y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用;
- yy 复制整行(nyy或者yny ,复制n行,n为数字);
- y^ 复制当前到行头的内容;
- y$ 复制当前到行尾的内容;
- yw 复制一个word (nyw或者ynw,复制n个word,n为数字);
- yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)
2.2 剪切
剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.
- d 剪切选定块到缓冲区;
- dd 剪切整行
- d^ 剪切至行首
- d$ 剪切至行尾
- dw 剪切一个word
- dG 剪切至档尾
2.3 粘贴
粘贴的命令式p,即put(放下)
- p :小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
- P 大写P代表贴至游标前(上)
2.4 撤销
在复制粘贴时,
- 一组常用的命令是u(撤销操作),U(撤销某一行最近所有修改)
- Ctrl+R(重做),这些功能主要是vim中的,vi中略有差别
2.5 添加新行
注意
- 在正则表达式中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。
- 命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号.可以重复上一个命令。
3. 文件及文件夹指令
3.1 查看文件及文件夹大小
3.1.1. 查看磁盘剩余容量 df
3.1.2. 查看文件夹大小 du
- 计算某个文件夹的大小:
- 输出当前目录下的所有文件和文件夹的大小,并按照大小排序
- 显示当前目录下所有一级子目录的大小
- 显示当前目录的总大小
- 显示当前目录下所有子目录的大小,递进到最大深度
常用指令
3.2文件夹内文件数量
参考
当前目录下文件的个数(不含子文件夹):
- ls -l | grep "^-" | wc -l
复制代码
当前目录下文件的个数(含子文件夹里的),注意:R,代表子目录:
- ls -lR | grep "^-" | wc -l
复制代码
当前目录下文件夹的个数(不含子文件夹):
- ls -l | grep "^d" | wc -l
复制代码
当前目录下文件夹的个数(含子文件夹里的):
- ls -lR | grep "^d" | wc -l
复制代码
指定目录下(这里是/abc)文件的个数(不含子文件夹):
- ls -l /abc| grep "^-" | wc -l
复制代码
通常一个种子在某个路径(这里看作abc文件夹下)下载后是一个文件或是一个文件夹,可以变相统计种子数:
命令解释:
- ls:用于列出文件
- grep:用于过滤信息
- wc:用于统计各类信息,-l用于统计行数
3.3 压缩解压缩
参考
3.3.1 ZIP
zip可能是目前使用得最多的文档压缩格式。
- 优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。
- 缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。
3.3.1.1 压缩
我们可以使用下列的命令压缩一个目录:
- zip -r archive_name.zip directory_to_compress
复制代码
3.3.1.2 解压缩
下面是如果解压一个zip文档:
3.3.2 TAR
Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。
3.3.2.1 压缩
下面是如何打包一个目录:
- tar -cvf archive_name.tar directory_to_compress
复制代码
3.3.2.2 解压缩
如何解包:
- tar -xvf archive_name.tar.gz
复制代码
上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:
- tar -xvf archive_name.tar -C /tmp/extract_here/
复制代码
3.3.3 TAR
TAR.GZ
这种格式是我使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。
3.3.3.1 压缩
使用下面这种格式去压缩一个目录:
- tar -zcvf archive_name.tar.gz directory_to_compress
复制代码
3.3.3.2 解压缩:
- tar -zxvf archive_name.tar.gz
复制代码
上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:
- tar -zxvf archive_name.tar.gz -C /tmp/extract_here/
复制代码
3.3.4 TAR.BZ2
这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。
这个就是你如何使用tar.bz2进行压缩。
3.3.4.1 压缩
- tar -jcvf archive_name.tar.bz2 directory_to_compress
复制代码
3.3.4.2 解压缩:
上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:
- tar -jxvf archive_name.tar.bz2 -C /tmp/extract_here/
复制代码
3.3.5多个分卷合并
3.3.5.1 tar.gz包
- 文件形式一。(参考)[https://blog.csdn.net/weixin_43692276/article/details/104921620]
- #连接文件为单独一个
- cat filename.tar.gz.a* >> filename.tar.gz
- #解压文件
- tar xvf filename.tar.gz
复制代码
- 1、合并使用spilt分割的文件
- cat sxrt5.0.dvd1.tar.gzaa sxrt5.0.dvd1.tar.gzab sxrt5.0.dvd1.tar.gzac >>sxrt5.0.dvd1.tar.gz
- 2、解压gz文件
- gunzip sxrt5.0.dvd1.tar.gz
- 3、解tar包
- tar xvf sxrt5.0.dvd1.tar
复制代码
查看端口占用
参考一
安装
- apt-get update
- apt-get install net-tools
复制代码
- 查看所有的服务端口(ESTABLISHED)
- 查看所有的服务端口,显示pid号(LISTEN,ESTABLISHED)
- 查看某一(**)端口,则可以结合grep命令:
4. 用户及用户组
4.1 改变权限
4.3 设置用户密码
- sudo passwd root
- [sudo] v100 的密码:
- 输入新的 UNIX 密码:
- 重新输入新的 UNIX 密码:
- passwd:已成功更新密码
复制代码
5. 监控及相关问题
nvidia 显卡
定时查看显卡状态
通常存在显存占用,但是无进程问题
参考
- 安装psmisc
- sudo apt-get install psmisc
复制代码
- 查看当前占用显存的进程
- sudo fuser -v /dev/nvidia*
复制代码
会出现如下结果,其中PID即为占用显存的进程号
- USER PID ACCESS COMMAND
- /dev/nvidia0: root 124 F...m python3
- /dev/nvidiactl: root 124 F...m python3
- /dev/nvidia-uvm: root 124 F...m python3
复制代码
- kill 占用的进程,例如:
- 全部杀死
- sudo fuser -v /dev/nvidia* |awk '{for(i=1;i<=NF;i++)print "sudo kill -9 " $i;}' | sh
复制代码
监控电脑状态
20 问题
20.1 安装问题
20.1.1 bash: add-apt-repository: command not found
- sudo apt-get install software-properties-common
复制代码
20.2 ubuntu 22.04 切 gcc/g++ 版本
参考
- add-apt-repository ppa:ubuntu-toolchain-r/ppa
复制代码
未完待续…