Linux常用工具记录

6 篇文章 0 订阅
4 篇文章 0 订阅

基础

PS:单个减号-可以代替标准输入或标准输出

grep

语法:

grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<action>][-e<范本样式>]\
[-f<范本文件>][PATTERN][文件或目录...]

action包括:read(默认为读取),skip(跳过),recurse(递归读取子文件)

选项:

-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合PATTERN的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合PATTERN的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合PATTERN的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合PATTERN的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合PATTERN的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e : 只能传递一个参数,在单条命令中使用多个 -e 选项,得到多个pattern,以此实现OR操作。
-E 或 --extended-regexp : 将pattern作为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则PATTERN,让grep查找符合规则条件的文件内容,格式为每行一个规则PATTERN。
-F 或 --fixed-regexp : 将PATTERN视为固定字符串的列表。
-G 或 --basic-regexp : 将PATTERN视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合PATTERN的那一行之前,不标示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的PATTERN的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的PATTERN的文件名称。
-n 或 --line-number : 在显示符合PATTERN的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN部分。
-r 或 --recursive : 递归搜索子文件,此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-w 或 --word-regexp : 只显示全字符合的列。
-x 或--line-regexp : 只显示全列符合的列。 

实现OR:

grep pattern1\|pattern2 filename
grep  -E 'pattern|pattern2 filename' //(-E表示使用正则)

实现AND:(同时出现pattern1和pattern2)

grep -E 'pattern1.*pattern2' filename 

实现NOT:

 grep -v 'pattern1' filename

ps

Linux ps (英文全拼:process status)命令用于显示当前进程的状态(快照)。

语法:

ps [options] [--help]

命令参数:

a  使ps列出带有终端(tty)的所有进程,或者与x选项一起使用时列出所有进程
c  显示进程所执行的指令(command)
e  显示环境变量
f  显示程序间的关系
u  指定用户的所有进程
x  列出您拥有的所有进程(与ps的EUID相同),或与a选项一起使用时列出所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程(等同于-e)
-N 反向选择
-H 显示树状结构
-o format 后跟输出格式,比如(ps -eo state,uid,pid,ppid,rtprio,ni,time,comm)
-p 后跟一个或多个pid(用,间隔)
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程 
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数

wc

wc指令我们可以计算文件的Byte数、字数(单词数)、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

wc [-clw][文件...]

-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。

编译相关

gcc

.a后缀为静态库 , .so后缀为动态库

-Dxxxx 相当于在代码头部加上#define xxxx
-Wall 生成所有警告信息
-w 不生成任何警告信息
-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
-o 制定目标名称
-fdump-class-hierarchy 将每个类的层次结构和虚拟函数表布局转储到文件中。

-Ixxx    	//指定额外的头文件搜索路径xxx
-Lxxx		//指定额外的函数库搜索路径xxx
-lLIBRARY 	//链接时指定函数库LIBRARY,默认自动搜索/local/lib中的库文件
$ gcc -Wall calc.c /usr/lib/libm.a -o calc//不使用-l
$ gcc -Wall calc.c -lm -o calc 			  //使用-l,省略了路径、前缀、后缀
//如果想要使用自定义静态库、动态库,则需要先-L添加该库文件路径

https://blog.csdn.net/daidaihema/article/details/80902012


nm

查看可执行文件、目标文件甚至静态库和动态库的符号表。

符号是表示每个ELF文件的一个重要部分,因为它保存了程序实现或使用的所有(全局)变量和函数。

nm -C a.out

nm默认输出name mangling后的符号名,-C参数将底层的符号名解码成用户级名字。

c++filt

将底层的符号名解码成用户级名字。

c++filt _Z3addv	
//输出add()

也可以和nm组合使用:

nm a.out | c++filt
//等价于nm -C a.out

objdump

用于解析C++二进制文件。
语法:

objdump [选项] objfile

选项:

-C:将底层的符号名解码成用户级名字。
-t:显示文件的符号表入口。类似于nm -s提供的信息 。
-d:将代码段反汇编。
-S:将代码段反汇编的同时,将反汇编代码和源代码交替显示,编译时需要给出-g。
-l:反汇编代码中插入源代码的文件名和行号。
-j section -S:反汇编指定的section。可以有多个-j参数来选择section(比如.text、.data)。
-T:显示文件的动态符号表入口,仅仅对动态目标文件有意义,比如某些共享库。它显示的信息类似于 nm -D|--dynamic 显示的信息。
-h:输出目标文件的所有段概括。
-x:以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出 <可查到该文件的所有动态库>...

详细:https://www.cnblogs.com/zendu/p/4987879.html

[TIP]Windows下VS也有类似的工具:dumpbin https://blog.csdn.net/luoyu510183/article/details/93666808


服务器相关

top

用于实时显示 进程 的动态。
使用权限:所有使用者。
语法:

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

选项:

d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

htop

互动式进程查看器,可以查看内存泄漏。

strace

strace是测试服务器性能的重要工具。它跟踪程序运行过程中执行的系统调用和接收到的信号,并将系统调用名、参数、返回值及信号名输出到标准输出或者指定的文件。

strace命令常用的选项包括:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

lsop

lsof(list open file)是一个列出当前系统打开的文件描述符的工具。通过它我们可以了解感兴趣的进程打开了哪些文件描述符,或者我们感兴趣的文件描述符被哪些进程打开了。

Isof命令常用的选项包括:
在这里插入图片描述
lsof命令的输出内容相当丰富,其中每行内容都包含如下字段:
在这里插入图片描述
举例:

在这里插入图片描述

vmstat

vmstat是virtual memory statistics的缩写,它能实时输出系统的各种资源的使用情况比如进程信息、内存使用、CPU使用率以及I/O使用情况。
在这里插入图片描述在这里插入图片描述

mpstat

mpstat是mult-processor statistics的缩写,它能实时监测多处理器系统上每个CPU的使用情况.mpstat命令和iostat命令通常都集成在包sysstat 中,安装sysstat即可获得这两个工具。

命令格式:

mpstat [ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ] [ -P { cpu [,...] | ON | ALL } ] [ interval [ count ] ]

选项:
-A: 等同于-u -I ALL -P ALL
-I:可以指定SUM CPU SCPU ALL四个参数,SUM表示每个处理器的中断总数,CPU表示每个核的每秒中断数量, SCPU表示每个核每秒的软中断数量
-P: 统计的CPU编号,一般用ALL
-u: 输出列的信息
-V: 查看工具版本号

典型用法:

在这里插入图片描述

在这里插入图片描述

网络相关

netstat

netstat是一个功能很强大的网络信息统计工具。它可以打印本地网卡接口上的全部连接、路由表信息、网卡接口信息等。主要利用的是上述功能中的第一个,即显示TCP连接及其状态信息。毕竟,要获得路由表信息和网卡接口信息,我们可以使用输出内容更丰富的route和ifconfig命令。

默认情况下,当执行netstat时如果不给出命令行选项,那么它会同时显示出UNIX域和Internet域已连接的套接字信息。我们可以通过一些命令行选项来改变所显示的信息。

语法:

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

选项:
-a 显示所有连线中的Socket,包括监听套接字(–all)
-A<网络类型>或–<网络类型> 列出该网络类型(tcp、udp、unix、inet)连线中的相关地址
-e 显示网络其他相关信息(包括属主用户ID)(–extend)
-c 持续列出网络状态,每秒刷新一次(–continuous)
-i 显示网卡接口的数据表单(–interfaces)
-l 显示监控中的服务器的Socket(–listening)
-s 显示每个协议的数据统计(–statistics)
-p 显示建立相关连接的程序名和PID(–programs)
-n 以网络IP地址代替名称(–numeric)
-t 显示TCP协议的连接情况 (–tcp)
-u 显示UDP协议的连接情况(–udp)
-x 此参数的效果和指定"-A unix"参数相同(–unix)
–ip此参数的效果和指定"-A inet"参数相同(或–inet)

在这里插入图片描述

tcpdump

语法:

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>]\
[-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

选项:
在这里插入图片描述
除了使用选项外,tcpdump还支持用表达式来进一步过滤数据包。tepdump表达式的操作数分为3种:类型(type)、方向(dir)和协议(proto),下面依次介绍之。

在这里插入图片描述在这里插入图片描述
此外,tcpdump的具体输出格式除了与选项有关外,还与协议有关。

在这里插入图片描述
flags中出现的. 表示ACK。

TCP报文控制位:
在这里插入图片描述

https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html


ifstat

ifstat是interface statistics的缩写,它是一个简单的网络流量监测工具。其常用的选项和参数包括:
在这里插入图片描述

ifconfig

获取、设置网络接口信息
在这里插入图片描述
启动关闭指定网卡(需要root权限)

# ifconfig eth0 down
# ifconfig eth0 up

route

操作路由表


arp

管理系统的arp缓冲区


脚本相关

expect

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

命令					说明
spawn               交互程序开始,后面跟命令或者指定程序
expect              获取匹配信息,匹配成功则执行expect后面的程序动作
send    			用于向进程发送字符串
exp_continue		用于循环匹配
interact 			允许用户交互
exit                退出expect脚本
eof                 expect执行结束 退出
set                 定义变量
puts                输出变量
set timeout         设置超时时间

设置了超时时间后,如果超时时间expect没有匹配成功,自动执行下一命令。

expect自动交互流程:

spawn启动指定进程–>expect获取指定关键字–>send向指定程序发送指定字符

示例:
自动切换root,开启web服务器进程 脚本。

#!/usr/bin/expect
set timeout 1

spawn su //启动su

expect ":" {//寻求匹配字符串":"
send "xxxxx\r"//匹配成功输入密码,\r回车
}

send "./MyWebServer -t 5 -b\r"//输入字符串,启动指定程序

interact//允许交互

设置超时时间是为了能在root模式下依旧可以使用该脚本。


参考: 《linux高性能服务器编程》 菜鸟教程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值