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

简介: 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日志并进行多维度分析。
相关文章
|
15天前
|
算法 安全 Linux
探索Linux内核的虚拟内存管理
【5月更文挑战第20天】 在本文中,我们将深入探讨Linux操作系统的核心组成部分之一——虚拟内存管理。通过剖析其关键组件和运作机制,揭示虚拟内存如何提供高效的内存抽象,支持庞大的地址空间,以及实现内存保护和共享。文章将重点讨论分页机制、虚拟内存区域(VMAs)的管理、页面置换算法,并简要分析这些技术是如何支撑起现代操作系统复杂而多变的内存需求的。
|
20天前
|
消息中间件 算法 Linux
【Linux】详解如何利用共享内存实现进程间通信
【Linux】详解如何利用共享内存实现进程间通信
|
18小时前
|
存储 Linux
【Linux】磁盘文件
【Linux】磁盘文件
|
6天前
|
缓存 算法 安全
探索Linux内核的虚拟内存管理
【5月更文挑战第29天】 在现代操作系统中,虚拟内存是支持多任务处理和内存保护的关键组件。本文深入分析了Linux操作系统中的虚拟内存管理机制,包括其地址空间布局、分页系统以及内存分配策略。我们将探讨虚拟内存如何允许多个进程独立地访问它们自己的地址空间,同时由操作系统管理物理内存资源。此外,文章还将涉及虚拟内存所带来的性能影响及其优化方法。
|
8天前
|
Linux Windows
Linux系统中如何查看磁盘情况
在Linux服务器中,通过命令行查看磁盘和文件占用情况是常见操作。`df`命令用于显示磁盘总容量、已用空间和可用空间,加上`-h`参数可使结果更易读。例如:`df -h .`。而`du`命令则用来检查目录或文件的大小,`du -hd 1 .`会显示当前目录下每个文件夹的大小。结合`sort -h`或`sort -hr`可以按人类易读的格式排序文件大小,便于查找占用空间最多的项目。
|
12天前
|
消息中间件 存储 安全
【Linux 系统】进程间通信(共享内存、消息队列、信号量)(下)
【Linux 系统】进程间通信(共享内存、消息队列、信号量)(下)
|
12天前
|
消息中间件 算法 Linux
【Linux 系统】进程间通信(共享内存、消息队列、信号量)(上)
【Linux 系统】进程间通信(共享内存、消息队列、信号量)(上)
|
18天前
|
Linux 网络安全
linux/服务器使用scp将一个服务器文件转移到另一个服务器上
linux/服务器使用scp将一个服务器文件转移到另一个服务器上
49 3
|
20天前
|
存储 Linux 程序员
【操作系统原理】—— Linux内存管理
【操作系统原理】—— Linux内存管理