面试会问到的linux命令

面试会问到的linux命令

总结一下面试中会问到的linux命令。

  1. ls

常用命令:

1
2
ls -l
ls --color=auto

输出信息:

第一列:第一个字为文件类型,后面三组分别是所属用户权限、所属组权限和其他用户所属权限,r (2)、w (4)、e (1)分别是读、写、执行。若为-则表示没有权限。

第二列:硬连接数量,硬连接就是允许一个文件有多个有效路径名。

第三列:为文件所属用户。

第四列:为文件所属组。

第五列:为文件大小。

第六列:为文件被修改的时间。

最后一列:为文件名。

可以使用chown改变所属用户,用chgrp改变所属组。

  1. nohup

不要挂起命令

1
nohup <command> >file.name 2 >&1 &

1表示标准输出,2表示标准错误输出。2>1&表示将两者合并。

  1. ps

查看当前正在运行的程序使用ps -ef

1
ps -ef | grep <progress>
  1. awk

下面的命令作用是将.csv文件按照“,”分割并打印第一列和第二列。

1
awk -F "," '{print 2}' filename.csv

下面的命令作用是获取第三列的最大值。

1
awk 'BEGIN{max=0}{if(3>max)max=3}END{print max}'
  1. tar

解压缩命令。

参数:

-c: 压缩。

-x: 解压缩。

-t: 列出tar文件包含的文件信息。

-r: 附加新的文件到包中。

常用写法:

1
2
3
4
5
6
7
8
9
10
11
# 压缩、实时显示、强制打包为tar
tar -cvf <filename>.tar <filename>

# 解压缩、实时显示、强制解包tar
tar -xvf <filename>.tar

# 用gzip压缩、实时显示、强制打包为tar.gz
tar -zcvf <filename>.tar.gz <filename>

# 用gzip解压缩、实时显示、强制解包tar.gz
tar -zxvf <filename>.tar.gz
  1. scp

scp可以再多个服务器中相互复制传输文件。

常用写法:

将文件A复制到位于网络上的B位置。

1
scp -r A B
  1. rm

慎用rm

linux没有回收站机制,将rm命令aliasmv并将要删除文件移入一个目录既可创建回收站机制。

  1. watch

动态监控命令执行结果。

mac没有watch命令,brew安装:

1
brew install watch

例子1:每隔一秒高亮显示http连接数变化。

1
watch -n 1 -d 'pstree | grep http'

例子2:每隔十秒输出系统的平均负载。

1
watch -n 10 'cat /proc/loadavg'
  1. df

查看磁盘使用情况。

常用命令:

1
df -h
  1. tcpdump

和它类似的工具在windows中是wireshark,其采用底层库winpcap/libpcap实现。采用了bpf过滤机制。下面我们看看提供的不同参数的含义。

参数名 含义
-n 使用IP地址表示主机。使用数字表示端口
-i 指定要监听的端口。如果为”-i any”表示住区所有网卡数据包
-v 输出诸如ip数据包中的TTL更加详细的信息
-t 不打印时间戳
-e 显示以太网帧头部信息
-c 仅仅抓取指定数量的数据包
-x 按照十六进制显示数据包内容
-X 不仅仅输出-x结果还输出十六进制对应的ASCII字符
-s 设置抓包时的抓包长度
-w 将输出结果定向到某个文件,一般为pcap后缀
-r 从文件读取数据包并显示数字表示端口
-i 指定要监听的端口。如果为”-i any”表示住区所有网卡数据包
-v 输出诸如ip数据包中的TTL更加详细的信息
-t 不打印时间戳
-e 显示以太网帧头部信息
-c 仅仅抓取指定数量的数据包
-x 按照十六进制显示数据包内容
-X 不仅仅输出-x结果还输出十六进制对应的ASCII字符
-s 设置抓包时的抓包长度
-w 将输出结果定向到某个文件,一般为pcap后缀
-r 从文件读取数据包并显示

知道了相关参数,下面看几个案例

执行任务 执行命令
捕获特定网口数据包 tcpdump -i eth0
捕获特定个数(1000)的包 tcpdump -c 1000 -i eth0
将捕获的包保存到文件 tcpdump -w a.pcap -i eth0
读取pcap格式的包 tcpdump -r a.pcap
增加捕获包的时间戳 tcpdump -n -ttt -i eth0
指定捕获包的协议类型 tcpdump -i eth0 arp
捕获指定端口 tcpdump -i eth0 post 22
捕获特定目标ip+port的包 tcpdump -i eth0 dst address and port 22
捕获DNS请求和响应 tcpdump -i eth0 -s0 port 53
匹配Http请求头 tcpdump -s 0 -v -n -l | egrep -i “POST /|GET /|Host:”
将捕获的包保存到文件 tcpdump -w a.pcap -i eth0
读取pcap格式的包 tcpdump -r a.pcap
增加捕获包的时间戳 tcpdump -n -ttt -i eth0
指定捕获包的协议类型 tcpdump -i eth0 arp
捕获指定端口 tcpdump -i eth0 post 22
捕获特定目标ip+port的包 tcpdump -i eth0 dst address and port 22
捕获DNS请求和响应 tcpdump -i eth0 -s0 port 53
匹配Http请求头 tcpdump -s 0 -v -n -l | egrep -i “POST /|GET /|Host:”
  1. lsof

列出当前打开的文件描述符工具,可以得知描述符被声明进程使用。

参数 描述
-i 显示sokcet文件描述符
-c 显示指定的命令打开的所有文件描述符
-t 仅显示打开了目标文件描述符的进程pid

例子:

执行任务 命令
列出所有的网络链接 lsof -i
列出所有udp的网络链接 lsof -i udp
列出谁在使用某个端口 lsof -i :3306
列出谁在使用特定的tcp端口 lsof -i tcp:80
根据文件描述范围列出文件信息 lsof -d 2-3
  1. nc

瑞士军刀,它用来快速构建网络链接。常用来调试客户端程序。

参数 描述
-i 设置数据包传送的时间间隔
-l 以服务器方式运行。默认为客户端运行
-k 重复接受并处理某个端口上的所有链接
-p 以客户端运行时强制其使用指定端口
-C 将CR和LF两个字符作为结束符
-u 使用udp协议。默认tcp协议
-X nc客户端余代理服务器通信时默认为socks5协议。
-z 扫描目标机器某个范围服务是否开启

例子:

执行任务 执行命令
扫描机器A端口号在30-40的服务 nc -z A 30-40
连接服务器A 端口号为5000 nc -C A 5000
传送文件 MachineA:nc -v -n ip portE:\a.exe
  1. netstat

网络信息统计。

可以查看网卡接口、路由表。

参数 描述
-n 使用IP地址表示主机
-a 显示结果中包含监听的socket
-t 仅显示TCP连接
-r 显示路由信息
-i 显示网卡接口数据流量
-c 每隔1s输出一次
-o 显示socket定时器的信息
-p 显示socket所属的进程的PID和名字

例子:

执行任务 执行命令
列出所有连接 netstat -a
只列出TCP或者UDP netstat -at/netstat -au
列出监听中的连接 netstat -tnl
获取进程名、进程号以及用户 ID nestat -nlpt
打印统计信息 netstat -s
netstat持续输出 netstat -ct
打印active状态的连接 netstat -atnp | grep ESTA
查看服务是否运行(npt) netstat -aple| grep ntp
  1. vmstat

实时输出系统进程信息和内存信息以及cpu占用。

参数 描述
-f 显示系统自启动以来执行的fork次数
-s 显示内存相关统计信息
-d 显示磁盘相关统计信息
-p 显示指定磁盘分区统计信息
count 采样次数。

vmstat输出信息字段:

字段名 描述
procs r表示等待运行的而进程数目。b表示处于不可中断睡眠状态的进程数目
memory swpd:使用的虚拟内存量。free:空闲内存量。buff:用作缓冲区的内存量。cache:用作缓存的内存量。
swap si:从磁盘换入的内存量(/s)。so:交换到磁盘的内存量(/s)。
io bi:从块设备接收的块(blocks/s)。bo:发送到块设备的块(blocks/s)。
system in:每秒中断的次数,包括时钟。cs:每秒上下文切换的次数。
  1. mpstat

用于实时监测多个处理器系统中的每个cpu的状态,需要先安装sysstat。

输出信息字段:

字段 描述
cpu 表示当前条信息属于哪个cpu的数据
%usr 进程运行在用户空间所占cpu运行时间的比例
%nice nice值为负的进程运行在用户空间的时间占cpu总运行时间的比例
%iowait cpu等待磁盘操作的时间占cpu总运行时间的比例
%irq cpu用于处理硬件中断时间占cpu总运行时间的比例
%soft cpu用于处理软件中断的时间占cpu用运行时间的比例
%steal 一对虚拟cpu。当超级管理员在处理某个虚拟cpu时,另一个等待它处理完才能运行。这段等待时间表示为steal时间占总运行时间的比例
%guest 运行虚拟cpu时间占cpu总运行时间的比例
%idle 系统空闲时间占cpu总运行时间的比例
  1. split

将文件分割为多个文件。

例子:将README.md文件每隔3行分割为一个文件。

1
split -3 README.md
  1. wc

wc命令的作用是统计文件的字节数、字数、列数。若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。

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

  1. more/less
  1. head/tail
  1. diff

其他linux命令查询:man

评论