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 查看正在运行的端口
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
2月前
|
缓存 算法 搜索推荐
从O(n²)到O(n log n):深度剖析快速排序的内存优化与cache-friendly实现 🌟 Hello,我是摘星!
作为一名深耕算法优化领域多年的技术工程师,我见证了无数次关于排序算法性能讨论的激烈辩论,而快速排序(QuickSort)始终以其卓越的实践表现占据着核心地位。今天我想和大家深入探讨的,不仅仅是快速排序的基础实现,更是如何通过精妙的内存优化策略,将其从理论上的O(n²)最坏时间复杂度,提升到实际应用中稳定的O(n log n)性能表现,并实现真正的cache-friendly设计。在我的实践经验中,许多开发者对快速排序的理解还停留在基础的递归实现层面,而忽略了现代计算机体系结构下内存层次结构对算法性能的深刻影响。本文将系统地分析快速排序在内存访问模式、缓存局部性、尾递归优化等方面的核心技术要点,
109 0
从O(n²)到O(n log n):深度剖析快速排序的内存优化与cache-friendly实现 🌟 Hello,我是摘星!
|
3月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
513 0
|
6月前
|
存储 监控 Linux
Linux: 检测磁盘坏块 你得会吧!
Linux: 检测磁盘坏块 你得会吧!
376 19
Linux: 检测磁盘坏块 你得会吧!
|
5月前
|
Linux
在线对Linux进行磁盘扩容的技术指南。
综上所述,Linux磁盘扩容的过程,重要的不仅是技术,更是对每一步骤的深刻理解和投入的爱心。只要手握正确的工具,我们不仅能满足"孩子"的成长需求,还能享受其中的乐趣和成就。
355 10
|
6月前
|
监控 固态存储 Linux
如何判断Linux磁盘是SSD还是HDD?
总的来说,判断磁盘是SSD还是HDD并不复杂,只需要使用正确的命令和方法,就可以轻松得到结果。希望这些信息对你有所帮助,如果你还有其他问题,欢迎随时提问。
539 15
|
6月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
7月前
|
Linux
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
626 10
|
7月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
8月前
|
监控 Linux
centos 中查看 内存及磁盘使用率
通过这些命令,您可以全面了解系统资源的使用情况,从而更好地管理和优化系统。
1365 22
|
8月前
|
存储 固态存储
磁盘和内存的区别
存储特性: • 磁盘:非易失性存储,数据在断电后不会丢失,适合长期存储数据。 • 内存:易失性存储,数据在断电后会丢失,适合临时存储当前运行的程序和数据。 容量: • 磁盘:容量通常较大,从几百GB到数TB不等,适合存储大量的文件和数据。 • 内存:容量相对较小,一般在几GB到几十GB之间,用于提供快速的临时存储空间。 速度: • 磁盘:读写速度较慢,HDD一般在几十MB/s,SSD可以达到几百MB/s甚至数GB/s。 • 内存:读写速度非常快,通常在几十纳秒到几百纳秒之间,能够快速响应CPU的指令。
397 2