7、搜索查找类
7.1 find查找文件或目录
find指令将从指定目录下递归地遍历各个子目录,将满足条件的文件显示在终端
- 语法
find【path】【选项】
- 选项说明
可使用的选项有二三十个之多,在此只介绍最常用的部份
选项 | 功能 |
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件,单位为: b —— 块(512字节) c —— 字节 w —— 字(2字节) k —— 千字节 M —— 兆字节 G —— 吉字节 查找大于200m的文件 +n大于 -n小于 n等于 |
- -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
- -amin n : 在过去 n 分钟内被读取过
- -anewer file : 比文件 file 更晚被读取过的文件
- -atime n : 在过去n天内被读取过的文件
- -cmin n : 在过去 n 分钟内被修改过
- -cnewer file :比文件 file 更新的文件
- -ctime n : 在过去n天内被修改过的文件
- -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
- -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
- -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
- -type c : 文件类型是 c 的文件。
- d: 目录
- c: 字型装置文件
- b: 区块装置文件
- p: 具名贮列
- f: 一般文件
- l: 符号连结
- s: socket
- -pid n : process id 是 n 的文件
可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2 ! expr -not expr exp1 -or exp2 exp1, exp2
- 案例
1.将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
2. 将目前目录其其下子目录中所有一般文件列出
# find . -type f
3. 将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
4. 查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} ;
5. 查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} ;
6. 为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} ;
7.服务器磁盘满,一般由大的日志文件导致,需找到大文件并删除。
解决1: find / -size +500M -print0|xargs -0 du -m|sort -nr
find指令为找出500M以上的文件,print0和xargs -0配合使用,用来解决文件名中有空格或特殊字符问题。du -m是查看这些文件的大小,并以m为单位显示。最后sort -nr是按照数字反向排序(大的文件在前)
解决2:上述方法从根路径查找,可能列出一些系统文件。可以在这个查找之前先进行一下过滤。
使用du -m -d 1 /|sort -nr
先看看根路径下,哪个文件夹比较大,并且有嫌疑是导致磁盘满的罪魁祸首。然后再基于那个目录进行find。
8. 记得写过一个xxx.c的文件,但是忘了放哪里了
解决: find / -name *xxx*.c
模糊查找下这个文件
7.2 locate 快速定位文件路径
locate指令利用实现建立的系统中所有文件名称及路径的locate数据库实现快速定位定给的文件
locate指令无需遍历整个文件系统,查询速度较快
为了保证查询结果的准确度,管理员必须定期更新locate时刻
- 语法
locate 搜索文件
- 经验
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
- 案例
如果未安装: yum -y install mlocate
7.3 grep过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
- 语法
grep 【选项】【查找内容】【源文件】
- 选项
- -a 或 --text : 不要忽略二进制的数据。
- -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
- -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
- -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
- -c 或 --count : 计算符合样式的列数。
- -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
- -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
- -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
- -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
- -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
- -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
- -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
- -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
- -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
- -i 或 --ignore-case : 忽略字符大小写的差别。
- -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
- -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
- -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
- -o 或 --only-matching : 只显示匹配PATTERN 部分。
- -q 或 --quiet或--silent : 不显示任何信息。
- -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
- -s 或 --no-messages : 不显示错误信息。
- -v 或 --revert-match : 显示不包含匹配文本的所有行。
- -V 或 --version : 显示版本信息。
- -w 或 --word-regexp : 只显示全字符合的列。
- -x --line-regexp : 只显示全列符合的列。
- -y : 此参数的效果和指定"-i"参数相同。
- 案例
(1)在当前目录中,查找后缀有file字样的文件中包含hello字符串的文件,并打印出该字符串的行
(2)以递归的方式查找符合条件的文件(-r)。
(3)反向查找(-v)
8、压缩解压类
8.1 gzip/gunzip压缩
- 语法
gzip 文件 (功能:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能:解压缩文件)
- 经验技巧
- 只能压缩文件不能压缩目录
- 不保留原来的文件
- 案例
8.2 zip/unzip 压缩
- 语法
zip 【选项】 【文件名.zip】【要压缩的文件】 (功能:压缩文件和目录)
unzip 【选项】【文件名.zip】 (功能:解压缩文件)
- 选项
zip选项 | 功能 |
-r | 压缩目录 |
unzip选项 | 功能 |
-d<目录> | 指定解压后文件的存放目录 |
- 经验
zip 压缩命令在window/Linux都通用,可以压缩目录且保留源文件
- 案例
8.3 tar 打包
- 语法
tar 【选项】 【目标名称.tar.gz】【将要打包的文件】 (功能:打包目录,压缩后的文件格式.tar.gz)
- 选项
选项 | 功能 |
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
9、磁盘分区类
10、进程线程类
10.1 ps查看当前系统进程状态
ps:process status 进程状态
- 语法
ps -aux | grep xxx (功能:查看系统中所有进程)
ps -ef | grep xxx (功能:查看子父进程之间的关系)
- 选项
选项 | 功能 |
-a | 选择所有进程 |
-u | 显示所有用户的所有进程 |
-x | 显示没有终端的进程 |
- 功能
(1)ps -aux显示信息说明
- USER:该进程是由哪个用户产生的
- PID:进程的ID号
- %CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
- %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
- VSZ:该进程占用虚拟内存的大小,单位KB;
- RSS:该进程占用实际物理内存的大小,单位KB;
- TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
- STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
- START:该进程的启动时间
- TIME:该进程占用CPU的运算时间,注意不是系统时间
- COMMAND:产生此进程的命令名
(2)ps -ef显示信息说明
- UID:用户ID
- PID:进程ID
- PPID:父进程ID
- C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
- STIME:进程启动的时间
- TTY:完整的终端名称
- TIME:CPU时间
- CMD:启动进程所用的命令和参数
- 经验
如果想看进程的CPU占用率和内存占用率,可以用aux
如果想查看进程的父进程ID可以使用ef
10.2 kill 终止进程
- 语法
kill 【选项】【进程号】 (功能:通过进程号杀死进程)
killall 【进程名称】 (功能:通过进程名称杀死进程,也支持通配符,在系统因负载过大而变得很慢时有用)
- 选项
选项 | 功能 |
-9 | 表示强迫进程立即停止 |
10.3 pstree 查看进程树
- 语法
pstree 【选项】
- 选项
选项 | 功能 |
-p | 显示进程的PID |
-u | 显示进程的所属用户 |
10.4 top查看系统将康状态
- 语法
top【选项】
- 选项说明
选项 | 功能 |
-d 秒数 | 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令: |
-i | 使top不显示任何闲置或者僵死进程。 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态。 |
- 操作说明
操作 | 功能 |
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
- 结果字段解释
第一行信息为任务队列信息
内容 | 说明 |
12:26:46 | 系统当前时间 |
up 1 day, 13:32 | 系统的运行时间,本机已经运行1天13小时32分钟 |
2 users | 当前登录了两个用户 |
load average: 0.00, 0.00, 0.00 | 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。 |
第二行为进程信息
Tasks: 95 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
94 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
第三行为CPU信息
Cpu(s): 0.1%us | 用户模式占用的CPU百分比 |
0.1%sy | 系统模式占用的CPU百分比 |
0.0%ni | 改变过优先级的用户进程占用的CPU百分比 |
99.7%id | 空闲CPU的CPU百分比 |
0.1%wa | 等待输入/输出的进程的占用CPU百分比 |
0.0%hi | 硬中断请求服务占用的CPU百分比 |
0.1%si | 软中断请求服务占用的CPU百分比 |
0.0%st | st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。 |
第四行为物理内存信息
Mem: 625344k total | 物理内存的总量,单位KB |
571504k used | 已经使用的物理内存数量 |
53840k free | 空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了 |
65800k buffers | 作为缓冲的内存数量 |
第五行为交换分区(swap)信息
Swap: 524280k total | 交换分区(虚拟内存)的总大小 |
0k used | 已经使用的交互分区的大小 |
524280k free | 空闲交换分区的大小 |
409280k cached | 作为缓存的交互分区的大小 |
10.5 netstat 显示网络统计信息和端口占用情况
- 语法
netstat -anp | grep 进程号 (功能:查看该进程网络信息)
netstat -nlp | grep 端口号 (功能:查看网络端口号占用情况)
- 选项
选项 | 功能 |
-n | 拒绝显示别名,能显示数字的全部转化成数字 |
-l | 仅列出有在listen(监听)的服务状态 |
-p | 表示显示哪个进程在调用 |
-a | 所有 |
11、crontab系统定时任务
11.1 重启crond服务
service crond restart
11.2 crontab 定时任务
- 语法
crontab【选项】
- 选项
选项 | 功能 |
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |