linux(日志管理、磁盘/内存管理、scp)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: linux(日志管理、磁盘/内存管理、scp)

一、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命令
  1. 可以看到整机的系统运行状态和cpu的使用率 。
  2. 主要看load average, CPU, MEN三部分
  3. Linux中top命令参数详解


  • uptime命令
    系统性能命令的精简版

(2)linux的cpu查看vmstat命令

  1. cpu查看命令
  2. Linux中vmstat命令参数详解
  3. 一般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命令
  1. 应用程序可用内存数
    free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略
  2. 经验

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 查看正在运行的端口
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
24天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
171 5
|
7天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
21 7
|
10天前
|
算法 Linux 开发者
深入探究Linux内核中的内存管理机制
本文旨在对Linux操作系统的内存管理机制进行深入分析,探讨其如何通过高效的内存分配和回收策略来优化系统性能。文章将详细介绍Linux内核中内存管理的关键技术点,包括物理内存与虚拟内存的映射、页面置换算法、以及内存碎片的处理方法等。通过对这些技术点的解析,本文旨在为读者提供一个清晰的Linux内存管理框架,帮助理解其在现代计算环境中的重要性和应用。
|
16天前
|
存储 缓存 监控
|
17天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
191 2
|
30天前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
42 3
|
1月前
|
存储 缓存 监控
Linux中内存和性能问题
【10月更文挑战第5天】
38 4
|
1月前
|
算法 Linux
Linux中内存问题
【10月更文挑战第6天】
41 2
|
13天前
|
缓存 算法 Linux
Linux内核中的内存管理机制深度剖析####
【10月更文挑战第28天】 本文深入探讨了Linux操作系统的心脏——内核,聚焦其内存管理机制的奥秘。不同于传统摘要的概述方式,本文将以一次虚拟的内存分配请求为引子,逐步揭开Linux如何高效、安全地管理着从微小嵌入式设备到庞大数据中心数以千计程序的内存需求。通过这段旅程,读者将直观感受到Linux内存管理的精妙设计与强大能力,以及它是如何在复杂多变的环境中保持系统稳定与性能优化的。 ####
22 0
|
1月前
|
存储 缓存 固态存储