Linux

三剑客

grep(global regular expressions print)

grep命令能够在一个或多个文件中,搜索某一特定的字符模式,包含指定字符模式的每一行内容,都会被打印(显示)到屏幕上

搜索多个文件,grep 命令的搜索结果只显示文件中发现匹配模式的文件名

grep [选项] 模式 文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mjGLpPrN-1587027725134)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583761333257.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ht0EtnlH-1587027725137)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583761368799.png)]

sed

按照定义的规则流编辑(替换、删除、输出)文本模式

awk

类似sed,但支持编程

得到一个文件的100到200行

sed -n ‘100,200p’ inputfile

awk ‘NR>=100&&NR<=200{print}’ inputfile

head -200 inputfile|tail -100

日志文件很大,怎么快速搜索某个内容

使用grep命令查找到指定关键字所在行号

[root@excbjdcpapp01 logs]# grep -n -e "refundInterTicket" -e "2017122900237918" ws.log | head -n 3
    
-n参数的作用是显示查找结果的所在行号
-e参数表示我们需要搜索的关键字,多个关键字就用多个 -e 参数
ws.log表示待搜索的大日志文件
head -n 3 表示显示前面查询结果的前三条记录

(2)使用vim命令打开文件的指定行:

vim打开文件的时候可以使用“+行号”的形式打开文件的指定行

[root@excbjdcpapp01 logs]# vim +27796016 ws.log

磁盘存储查询

  • df 命令报告我们拥有多少磁盘空间(空闲磁盘空间)
  • du 命令报告被文件和目录占用了多少磁盘空间。
df(disk free)
  • 查看整个文件系统磁盘空间使用情况
$ df -h 以人类友好的方式呈现
  • 查看目录所使用的文件系统磁盘空间使用情况
$ df -h /usr/
  • 列出整个文件系统节点使用情况
$ df -i
du(disk usage)
  • 查看当前目录下面所有子目录的目录大小和当前目录的所占空间
du -h
  • 查看指定文件所占空间
du -h log2020.log
  • 查看当前目录每个设定深度的文件夹的所占空间
du --max-depth=1 -h  /usr/

top使用方法

  • 动态刷新,3秒一个间隔
  • 第一部分,整体资源使用情况
  • 第二部分进程信息
  • 第一行任务队列信息。四核CPU平均负载超过超过4即为高负载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iMEbVCLg-1587027725141)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583932687240.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cll7sdg3-1587027725144)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583932806218.png)]

  • 第二行进程信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zB4bhN1f-1587027725148)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583932890180.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eXhHr6IR-1587027725151)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583932875684.png)]

  • 第三行CPU信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZwelaO4-1587027725154)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583932954246.png)]

  • 第四行物理内存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-29SA8Kno-1587027725157)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583933046093.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jYpRCVWW-1587027725160)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583933006411.png)]

  • 第五行swap交换分区,虚拟内存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xmOoAD75-1587027725162)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583933058736.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u011O20U-1587027725165)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583933020616.png)]

  • 第二部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKb4Otdw-1587027725169)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583933140167.png)]

  • top -p 2734 查看某个进程信息
  • top -b -n 1 > /root/top.log top命令只执行一次,然后把执行结果保存到top.log文件中

内存使用查询

  • 查看内存使用情况
  • buffer (Buffer Cache) 存放在内存中要输出到磁盘的数据
  • cache(Page Cache) 是从磁盘读出存放到内存中的数据
  • swap,交换分区,物理内存的不足利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uelYfKSK-1587027725176)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583917740182.png)]

CPU信息查询

cat /proc/cpuinfo

processor 逻辑处理器的id。
physical id 物理封装的处理器的id。
core id 每个核心的id。
cpu cores 位于相同物理封装的处理器中的内核数量。
siblings 位于相同物理封装的处理器中的逻辑处理器的数量。

sar(System Activity Reporter)
  • sar -u 1 3 间隔1s采集三次cpu使用
  • sar -P 0 -u 1 5 指定某个cpu查看
  • sar -b 1 3 IO传输速率查看
  • sar -n DEV 1 1 // 网路设备的状态信息
  • sar -n SOCK 1 1 // SOCK的使用情况
  • sar -n TCP 1 1 TCP连接统计

netstat网络信息查询

列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字

  • 列出所有连接(tcp、udp、unix)

    $netstat -a

  • 只列出 TCP 或 UDP 协议的连接

    $ netstat -at tcp

    $ netstat -au udp

  • 只列出监听中的连接

    $ netstat -tnl tcp -n使用ip显式而不是域名

    $ netstat -unl udp

  • 获取端口连接进程名、进程号以及用户 ID

    $ sudo netstat -nlpt 列出tcp监听的进程号和端口号

  • 统计网络数据

    $ netstat -s 列出所有网络包的收发请求统计情况

    $ netstat -st 列出tcp包的统计情况

  • 获取内核路由信息

    $ netstat -rn -n是nu’meric打印ip而不是域名

  • 获取网络设备

    $ netstat -i

  • 端口使用情况

    $ netstat -pan | grep 5632 查询5632端口号的使用情况

  • linux哪个命令知道多少客户端连接服务器的数量

    $ netstat -na|wc -l wc -l 计算有几行连接数

    $ netstat -na| grep ESTABLISHED | wc -l wc -l 计算有几行有效连接数

ps(process stastic)查看进程id

-a,查看所有

-u,以用户(user)的格式显示

-x, 显示后台进程运行参数

-ef,以全格式显示进程所有信息,包括父进程Pid,创建人,创建时间,进程号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JlDN2BhG-1587027725179)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583996359702.png)]

USER :进程的所属用户,
PID :进程的进程ID号,
%CPU :进程占用的 CPU资源 百分比,
%MEM :进程占用的 物理内存 百分比,
VSZ :进程使用掉的虚拟内存量 (Kbytes) ,
RSS :进程占用的固定的内存量 (Kbytes) ,
TTY :与进程相关联的终端(tty),?代表无关,tty1-tty6是本机上面的登入者程序,pts/0表示为由网络连接进主机的程序。
STAT :进程的状态,具体见2.1列出来的部分 ,
START :进程开始创建的时间 ,
TIME :进程使用的总cpu时间,
COMMAND : 进程对应的实际程序。

查看线程用哪个命令

  • ps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KqYdGnJj-1587027725184)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583996743444.png)]

  • top

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eL90A4Hq-1587027725188)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583996946324.png)]

  • htop

安装、开启htop,然后按来进入htop的设置菜单。选择“设置”栏下面的“显示选项”,然后开启“树状视图”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wWUgcSxc-1587027725192)(C:\Users\cqlia\AppData\Roaming\Typora\typora-user-images\1583997015259.png)]

命令别名alias

  • 查看所有别名

    $ alias

  • 查看某个别名

    $ alias xxx

  • 设置别名

    $ alias xxx=‘yyyyy yuiifh’

介绍GDB和常用调试命令;

https://blog.csdn.net/qq_37941471/article/details/81476942

介绍

GDB(GNU symbolic debugger)GNU调试器,是用来帮助调试我们程序的工具

可以做一下事情

  • 给程序设置(特定条件下的)断点
  • 当程序停在断点处时,我们查看所有变量、寄存器的
  • 当程序停在断点处时,我们除了能查看所有变量、寄存器的值以外,还能在不改变源代码的情况下改变这些值
调试
$gcc -g test.c     -g编译生成可执行文件且加上调试信息
$gdb a.out 			启动调试
$(gdb)l			显示当前程序代码,一次10行,可以连续显式
$(gdb)l 函数名   显式这个函数的代码
$(gdb)b 10	在第十行打断点break
$(gdb)break 666 if testsize==100 条件断点:满足条件就中断程序运行break line-or-function if expr
$(gdb)r		run开始运行程序
$(gdb)s     step逐步执行,看到第10后下面的语句执行的printf输出
$重复上条命令,直接按enter
$(gdb)print i 查看某个变量的值
$(gdb)whatis i 查看某个变量类型
$(gdb)bt 	查看函数堆栈
$(gdb)finish 结束调试
$(gdb)n			(进入下一次调试)
$(gdb)q		退出调试

core dump

定义

程序由于各种异常或者bug导致在运行过程中异常退出或者中止,一定条件下会产生一个叫做core的文件

产生原因
  • 内存访问越界
  • 多线程程序使用线程不安全函数
  • 多线程竞态数据未加锁
  • 非法指针
    • 使用空指针
    • 对于一个指向一段内存的指针,在不确定是否是这个类型或结构的情况下,强行reinterprete,导致bus error从而core dump
  • 堆栈溢出,过大的局部变量或参数
定位
$ulimit -c unlimited          -c <core文件上限>  设定core文件的最大值,单位为区块  
$./test
$gdb test core
$(gdb)bt

内存泄漏如何查询?

发现
  • 内存充足时,尽量使用内存来缓存一些文件,从而加快进程的运行速度,而当内存不足时,会通过相应的内存回收策略收回cache内存,供进程使用
  • used分配给缓存的数量
  • free未分配的数量
  • 程序实际使用量used-buffers-cached
  • 实际可用内存free+buffers+cached

used 和 buffers + cached 值差距很大则发生泄漏

静态分析

BEAM 可以检测四类问题: 没有初始化的变量;废弃的空指针;内存泄漏;冗余计算

动态监测

位为区块
$./test
$gdb test core
$(gdb)bt


## 内存泄漏如何查询?

#### 发现

* 内存充足时,尽量使用内存来缓存一些文件,从而加快进程的运行速度,而当内存不足时,会通过相应的内存回收策略收回cache内存,供进程使用
* used分配给缓存的数量
* free未分配的数量
* 程序实际使用量used-buffers-cached
* 实际可用内存free+buffers+cached

used 和 buffers + cached 值差距很大则发生泄漏

#### 静态分析

BEAM  可以检测四类问题: 没有初始化的变量;废弃的空指针;内存泄漏;冗余计算

#### 动态监测

Valgrind其中的 memecheck 工具可以用来寻找 c、c++ 程序中内存管理的错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值