1、find指令
详见:https://man.linuxde.net/find
- 查找指定文件名的文件(不区分大小写):
find -iname "MyProgram.c"
。 - 对找到的文件执行某个命令:
find -iname "MyProgram.c" -exec md5sum {} \;
。 - 查找 home 目录下的所有空文件:
find ~ -empty
。
? 【常用】如何在 /usr 目录下找出大小超过 10MB 的文件?
-
输入命令
find /usr -type f -size +10240k
命令。 -
输出结果如下:
/usr/lib/locale/locale-archive /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/lib/amd64/server/classes.jsa /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/lib/amd64/server/libjvm.so /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/lib/rt.jar // ... 省略
? 如何在 /var 目录下找出 90 天之内未被访问过的文件?
- 输入命令:
find /var \! -atime -90
。
? 如何在 /home 目录下找出 120 天之前被修改过的文件?
- 输入命令:
find /home -mtime +120
。
? 在整个目录树下查找文件 “core” ,如发现则无需提示直接删除它们?
- 输入命令:
find / -name core -exec rm {} \;
。
2、du指令
显示文件或目录所占用的磁盘空间。
命令格式:
du [option] 文件/目录
-h 输出文件系统分区使用的情况,例如:10KB,10MB,10GB等
-s 显示文件或整个目录的大小,默认单位是KB
显示当前目录的大小:
显示某个目录或文件的大小:
显示当前目录下所有文件的大小:
包括当前目录下的文件和子目录。
写法的区别:
du -sh xxx 显示总目录的大小,但是不会列出目录中的每一个文件
du -sh xxx/* 列出xxx下每个目录和文件所占的容量
查找Linux系统中的占用磁盘空间最大的前10个文件或文件夹
du -hsx * | sort -rh | head -10
3、ls指令
- 以易读的方式显示文件大小(显示为 MB,GB…):
ls -lh
。 - 以最后修改时间升序列出文件:
ls -ltr
。 - 在文件名后面显示文件类型:
ls -F
。
4、Linux下查看系统中占用内存和CPU最多的进程
1)linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
2)linux下获取占用内存资源最多的10个进程,可以使用如下命令组合:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
或者top (然后按下M,注意这里是大写)(内存)
或者top (然后按下P,注意这里是大写)(CPU)
其中第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)
。
接下来的grep -v PID
是将ps aux
命令得到的标题去掉,即grep
不包含PID
这三个字母组合的行,再将其中结果使用sort排序。
sort -rn -k +3
该命令中的-rn的r表示是结果倒序排列,n
为以数值大小排序,而-k +3
则是针对第3列的内容进行排序,再使用head
命令获取默认前10
行数据。(其中的|表示管道操作)
补充:内容解释
PID
:进程的ID
USER
:进程所有者PR
:进程的优先级别,越小越优先被执行NInice
:值VIRT
:进程占用的虚拟内存RES
:进程占用的物理内存SHR
:进程使用的共享内存S
:进程的状态。S
表示休眠,R
表示正在运行,Z
表示僵死状态,N
表示该进程优先值为负数%CPU
:进程占用CPU
的使用率%MEM
:进程使用的物理内存和总内存的百分比TIME+
:该进程启动后占用的总的CPU
时间,即占用CPU
使用时间的累加值。COMMAND
:进程启动命令名称
5、less 命令
-
这个命名可以在不加载整个文件的前提下显示文件内容,在查看大型日志文件的时候这个命令会非常有用:
less huge-log-file.log
。 -
当你用 less 命令打开某个文件时,下面两个按键会给你带来很多帮助,他们用于向前和向后滚屏:
CTRL+F – forward one window CTRL+B – backward one window
通用命令
1、grep
grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
grep 可用于 shell 脚本,因为 grep 通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回 0,如果搜索不成功,则返回 1,如果搜索的文件不存在,则返回 2。我们利用这些返回值就可进行一些自动化的文本处理工作。
(1)命令格式
grep [选项] pattern [file]
(2)常用参数
参数 描述
-c 计算找到 '搜寻字符串'(即 pattern) 的次数
-i 忽略大小写的不同,所以大小写视为相同
-n 输出行号
-v 反向选择,打印不匹配的行
-r 递归搜索
--color=auto 将找到的关键词部分加上颜色显示
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的单个字符。
*:所有字符,长度可以为0。
- 在文件中查找字符串(不区分大小写):
grep -i "the" demo_file
。 - 输出成功匹配的行,以及该行之后的三行:
grep -A 3 -i "example" demo_text
。 - 在一个文件夹中递归查询包含指定字符串的文件:
grep -r "ramesh" *
。