一、linux根据内容搜索指定文件
假设存在日志文件 hrun.log,查询的关键字为"新增用户":
1.根据关键字查看日志 : cat hrun.log | grep "新增用户"
2.根据关键字查看后10行日志: cat hrun.log | grep "新增用户" -A 10
3.根据关键字查看前10行日志: cat hrun.log | grep "新增用户" -B 10
4.根据关键字查看前后10行日志,并显示出行号: cat -n hrun.log | grep "新增用户" -C 10
5.查看日志前 50 行: cat hrun.log | head -n 50
6.查看日志后 50 行,并显示出行号:cat -n hrun.log | tail -n 50
说明: -A 表示关键字之后,After -B 表示关键字之前,Before -C 表示关键字前后,Context
二、六种查看日志的命令
1、tail
1.1 命令功能
tail 命令从指定点开始将文件写到标准输出。
1.2 命令格式
tail[必要参数][选择参数][文件]
1.3 命令参数
命令 | 说明 |
-f | 循环读取 |
-q | 不显示处理信息 |
-v | 显示详细的处理信息 |
-c | 显示的字节数 |
-n | 显示行数 |
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
1.4 使用实例tail -n 10 file.log 查询日志尾部最后10行的日志;
tail -n +10 file.log 查询第10行之后的所有日志;
tail -fn 100 file.log 循环实时查看最后100行记录tail一般还会配合着grep用tail -fn 1000 file.log | grep '关键字’如果查询的数据量太大,Ctrl + F 或者 空格键可以翻页查看tail -n 5000 file.log |more -1000
2、head
2.1 命令功能
head跟tail是相反,用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。head -n 10 file.log 查询日志文件中的头10行日志;
head -n -10 file.log 查询日志文件除了最后10行的其他所有日志;
2.2 命令格式
tail[必要参数][选择参数][文件]
2.3 命令参数
参考tail
3、cat
**3.1 命令功能一次显示整个文件:**cat filename
从键盘创建一个文件(只能创建新文件,不能编辑已有文件):cat > filename
将几个文件合并为一个文件:cat file1 file2 > file
3.2 命令格式
cat [选项] [文件]…
3.3 命令参数
命令 | 说明 |
-A, --show-all | 等价于 -vET |
-b, --number-nonblank | 对非空输出行编号 |
-e | 等价于 -vE |
-E, --show-ends | 在每行结束处显示 $ |
-n, --number | 对输出的所有行编号,由1开始对所有输出的行数编号 |
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
3.4 使用实例把 file1.log 的文件内容加上行号后输入
file2.log 这个文件里cat -n file1.log file2.log把 file1.log 和 file2.log 的文件内容加上行号(空白行不加)之后将内容附加到 file.log 里cat -b file1.log file1.log file.log把 file1.log 的文件内容加上行号后输入 file.log 这个文件里cat -n file1.log > file.logtac 是将 cat 反写过来,所以他的功能就跟 cat 相反
4、more
4.1 命令功能
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
4.2 命令语法
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file … ]
4.3 命令参数后加n
从笫n行开始显示 -n 定义屏幕大小为n行 +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 -c 从顶部清屏,然后显示 -d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能 -l 忽略Ctrl+l(换页)字符 -p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似 -s 把连续的多个空行显示为一行 -u 把文件内容中的下画线去掉
4.4 常用操作命令Enter 向下n行,需要定义,默认为1行
Ctrl + F 向下滚动一屏 空格键 向下滚动一屏 Ctrl + B 返回上一屏 = 输出当前行的行号 :f 输出文件名和当前行的行号 V 调用vi编辑器 !命令 调用Shell,并执行命令 q 退出more
.5 使用示例显示文件中从第3行起的内容
more +3 file.log
从文件中查找第一个出现test字符串的行,并从该处前两行开始显示输出more +/test file.log
设定每屏显示行数
more -5 log2012.log
5、less
5.1 命令功能
less与more类似,使用less可以随意浏览文件,而more仅能向前移动,不能向后移动,而 less 既可以向前移动,也可以向后移动。
5.2 命令格式
less [参数] 文件
5.3 命令参数
-b 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -o 将less 输出的内容在指定文件中保存起来 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 -x 将“tab”键显示为规定的数字空格
5.4 常用操作命令/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能 n:重复前一个搜索(与 / 或 ? 有关) N:反向重复前一个搜索(与 / 或 ? 有关) b 向后翻一页 d 向后翻半页 h 显示帮助界面 Q 退出less 命令 u 向前滚动半页 y 向前滚动一行 空格键 滚动一行 回车键 滚动一页 [pagedown]: 向下翻动一页 [pageup]: 向上翻动一页
5.5 less命令在查询日志时,
一般流程是这样的less file.log
shift + G 命令到文件尾部 然后输入 ? 加上你要搜索的关键字例如:?test
按 n 向上查找关键字
shift + n 反向查找关键字
6、sed
6.1 命令功能
这个命令可以查找日志文件特定的一段 , 根据时间的一个范围查询,可以按照行号和时间范围查询
6.2 使用示例按照行号:
只查看文件的第5行到第10行:sed -n ‘5,10p’ file.log
按照时间段:sed -n ‘/2019-12-17 16:17:20/,/2019-12-17 16:17:36/p’ file.log
三、 Linux磁盘/内存管理
1、linux查看磁盘空间
(1)df(Display Filesystem)查看文件系统
df: 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息,空间单位默认为K。
-h :(human),数字大小可读性,显示为如1M,1G单位 -T:Type 显示文件系统类型 -t :--type=Type 显示类型为Type的文件系统
显示内容参数说明:
- Filesystem:文件系统
- Type: 文件系统类型
- Size: 分区大小
- Used: 已使用容量
- Avail: 还可以使用的容量
- Use%: 已用百分比
- Mounted on: 挂载点
(2)du (disk usage)磁盘使用情况
du:显示当前磁盘空间的使用情况,用于查看当前目录的下所有目录大小,不显示文件。
-a: 查看包括文件 --max-depth=n:只查看目录深度为n的目录或文件 --threshold=360K : 只查看大于等于指定值的目录或文件 --time:显示目录或文件最后一次修改的时间
2、 Linux系统CPU查看
(1)整机的运行状态查看 top命令
- top命令
- 可以看到整机的系统运行状态和cpu的使用率 。
- 主要看load average, CPU, MEN三部分
- Linux中top命令参数详解
- uptime命令
系统性能命令的精简版
(2)linux的cpu查看vmstat命令
- cpu查看命令
- Linux中vmstat命令参数详解
- 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数
procs
r:运行和等待的CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不超过总核数的2倍,否则代表系统压力过大,我们看蘑菇博客测试服务器,能发现都超过了2,说明现在压力过大
b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等
cpu
us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序
sy:内核进程消耗的CPU时间百分比
us + sy 参考值为80%,如果us + sy 大于80%,说明可能存在CPU不足,从上面的图片可以看出,us + sy还没有超过百分80,因此说明蘑菇博客的CPU消耗不是很高
id:处于空闲的CPU百分比
wa:系统等待IO的CPU时间百分比
st:来自于一个虚拟机偷取的CPU时间比
4.sar命令
sar命令语法和vmstat一样。命令不存在时需要安装sysstat包,这个包很有用。
命令示例:
例如每1秒采集一次CPU使用率,共采集5次。
3、查看内存使用率 free 和 pidstat
- free命令
- 应用程序可用内存数
free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略 - 经验
4、Linux之磁盘IO查看iostat和pidstat
(1) iostat 磁盘I/O性能评估
磁盘块设备分布
rkB/s每秒读取数据量kB;wkB/s每秒写入数据量kB;
svctm lO请求的平均服务时间,单位毫秒;
await l/O请求的平均等待时间,单位毫秒;值越小,性能越好;
util一秒中有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘;
rkB/s、wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。
svctm的值与await的值很接近,表示几乎没有IO等待,磁盘性能好。
如果await的值远高于svctm的值,则表示IO队列等待太长,需要优化程序或更换更快磁盘。
(2)查看额外
mpstat -P ALL 2 #查看所有的cpu核信息 • 1
pidstat -u 1 -p 进程编号 #每个进程使用cpu的用量分解信息
5、Linux之网络IO查看ifstat
默认本地没有,下载ifstat
wget http://gael.roualland.free.fr/lifstat/ifstat-1.1.tar.gz tar -xzvf ifstat-1.1.tar.gz cd ifstat-1.1 ./configure make make install
查看网络IO
各个网卡的in、out
观察网络负载情况程序
网络读写是否正常
- 程序网络I/O优化
- 增加网络I/O带宽
四、文件相关命令
1、scp远程拷贝文件
scp命令主要用于Linux下进行远程拷贝文件,和cp命令类似,只是cp命令仅在本机进行拷贝而不能跨服务器,scp传输是加密的。
语法:
scp (选项) (参数)
选项:
\-1:使用ssh协议版本1; \-2:使用ssh协议版本2; \-4:使用ipv4; \-6:使用ipv6; \-B:以批处理模式运行; \-C:使用压缩; \-F:指定ssh配置文件; \-l:指定宽带限制; \-o:指定使用的ssh选项; \-P:指定远程主机的端口号; \-p:保留文件的最后修改时间,最后访问时间和权限模式; \-q:不显示复制进度; \-r:以递归方式复制。
参数:
源文件:要复制的源文件。
目标文件:目标文件,格式为user@host:filename (文件名为目标文件的名称)
一、复制远程机器上文件到本地
将10.10.12.74机器上的/data/xiaoxiong/目录中的test.txt文件复制到本地/data/testdata/目录中。
scp root@10.10.12.74:/data/xiaoxiong/test.txt /data/testdata
二、复制远程机器上文件夹到本地
将10.10.12.74机器上/data/xiaoxiong/目录中的test文件夹复制到本地的/data/testdata目录中。
scp -r root@10.10.12.74:/data/xiaoxiong/test /data/testdata
三、复制本地机器上文件到远程机器
将本地机器上/data/testdata/目录中的test.txt文件复制到10.10.12.74机器上的/data/xiaoxiong目录中。scp /data/testdata/test.txt root@10.10.12.74:/data/xiaoxiong
四、复制本地机器上文件夹到远程机器
将本地机器上的/data/xiaoxiong/目录中的test文件夹复制到10.10.12.74机器上的/data/testdata目录中。
scp -r /data/xiaoxiong/test root@10.10.12.74:/data/testdata
五、其他命令
1、一些常用命令
- vim下取消文件黄色背景 esc加:nohl
2、win系统下cmd命令
- cls 清屏
- netstat -a 查看正在运行的端口