Linux常用命令 – 实习

该部分主要记录网络方面常使用的工具及相关命令。

[TOC]

1.测量网络工具,iperf

测量网络流量及带宽的工具,此外,还可以用作测试两服务器之间是否能够连通。
参考 https://iwiki.woa.com/pages/viewpage.action?pageId=1200549703 (组内分享)
Change between iPerf 2.0, iPerf 3.0 and iPerf 3.1:https://iperf.fr/iperf-doc.php

建议选择使用iperf2,iperf3不支持组播功能、以逗号为分隔符输出结果等。

服务端:
iperf -s -p <port>
客户端:
iperf -c <接收端主机名>或<接收端的IP地址> -b <传输带宽> -t <测量时间[秒] > -i <间隔> -l <包大小> -p <port> -P <parallel,并行运行的线程数量> -n <需要传输的总包量,byte>

-V 表示使用ipv6

注意:服务端退出iperf监听使用 ctrl+c 退出, ctrl+z 退出仍是会调用端口进程一直监听。

2.查看端口进程lsof -i、杀死进程 kill

参考 Linux 命令神器:lsof 入门

lsof :“列出打开文件(lists openfiles)”,在Unix中一切(包括网络套接口)都是文件。

获取网络连接:lsof -i

查看网络端口进程: lsof -i:端口号
杀掉进程:
kill -9 pid

kill -9 强制立即结束,kill则是发送 SIGTERM(15)信号给进程,告诉进程请自行停止运行并退出,kill与kill -9的区别

抓包使用tcpdump命令时,如果使用 信号9 则文件包不会保存下来,应该使用 信号15 待进程保存文件后自动结束。

3.查看日志文件等, vim/less/tail

参考 Linux 6种日志查看方法,不会看日志会被鄙视的
个人较为常用:

  1. vim 或 less 文件名
    less可以使用【pageup】和【pagedown】键进行前翻页和后翻页
    打开后搜索内容 ,输入 /内容 ,回车

  2. tail 文件名 , 会把 filename 文件里的最尾部的内容显示在屏幕上

js
-f 循环读取,不断刷新,只要 filename 更新就可以看到最新的文件内容。常用于查阅正在改变的日志文件。
-n <行数> 显示行数

配合着grep用,例如 :
tail -fn 1000 test.log | grep '关键字'

head 与tail相反,从头部开始

4.抓包工具

1、tcpdump

参考 tcpdump详解 、https://km.woa.com/articles/show/482169?kmref=search&from_page=1&no=1
Tcpdump常用的参数如下:

-i:指定抓取哪个网卡;
src host:源IP
src port:源端口
portrange 8000-8080
dst host:目标IP
dst port: 目标端号
-w / -r: 保存数据包 / 读取数据包
-n:不把ip转化成域名,直接显示 ip,避免执行 DNS lookups 的过程,速度会快很多
-nn:不把协议和端口号转化成名字,速度也会快很多。
-v:产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。

示例:tcpdump -i eth0 dst host 127.0.0.1 and port 2344
注意:

  1. -w保存的文件类型为pcap,需要使用相关工具才能打开,如wireshark,可将文件拷贝至本地电脑wireshark打开,或者在linux上安装wireshark打开,但需要支持回传图形界面,可参考Ubuntu 上 Wireshark 的安装与使用 – 知乎 (zhihu.com)
  2. dpdk母机tcpdump命令为 dpdk-tcpdump
  3. -i any 抓包的话,其数据链路层会显示 Linux cooked capture , 这里需要注意,有可能会影响到代码中 scapy 库使用不当。
    原因参考 Linux Cooked Capture in Packets ,抓所有网卡的数据包,或者是所抓网卡数据包类型或包头 libpcap 不支持。那么 wireshark 就会造一个 Linux cooked capture 的伪名称。

5.traceroute

traceroute [-I] hostname [-n] [-m<存活数值>] [-p<通信端口>] [-w<超时秒数>] [-q <探测包个数>] [--sport=num] [-t<tos值>]

-n 直接使用IP地址而非主机名称,不开启DNS解析
-I 指定ICMP协议探测包
-T 指定TCP协议探测包
-U 指定UDP协议探测包
  1. 定义
    参考 traceroute使用与实现原理分析维基Traceroutetraceroute(路由追踪)的原理与实现 ,都写的很详细。

    1. 定位从源主机到目标主机之间经过了哪些路由器,以及到达各个路由器的耗时。
    2. 显示数据包在IP网络经过的路由器的IP地址。
  2. 实现原理(个人理解):
    设置到达每个节点的TTL,使其到达每个节点TTL为0并让节点返回错误信息(Type:超时错误),其中当到达目的主机时返回的错误信息则为“目标端口不可达(code)”(发送UDP报文设置的目标端口一般为不常用端口 30000以上),从而实现获取到达各个路由器的相关信息。

    程序是利用增加存活时间(TTL)值来实现其功能的。每当数据包经过一个路由器,其存活时间就会减1。当其存活时间是0时,主机便取消数据包,并发送一个ICMP TTL数据包给原数据包的发出者。

    img#543px #415px

    注意:linux默认发送udp协议,但如果需要指定udp目标端口,仍需要加上 -U 指定udp。

  3. 为什么有的记录会是 * ?

    linux默认发送的探测包为UDP协议,鉴于许多攻击者会利用UDP特性进行网络攻击,故部分网关会设置不返回ICMP报文。
    当某个 TTL 值的数据包得不到响应时,并不会停止这一追踪过程,程序仍然会把 TTL 递增而发出下一个数据包。这个过程将一直持续到数据包发送到目标主机,或者达到默认或用参数指定的追踪限制(maximum_hops 默认最大为30)才结束追踪。
    以上更多可以参考 能ping通traceroute不通

6.echo 、 ‘ > ‘

参考 Linux echo命令“echo >”和“echo >>”的区别
主要是了解 “>”和“>>”的使用
> 输出重定向, echo > 写入内容至指定文件
>> 输出追加重定向, echo >> 写入内容至指定文件内容末尾
eg:echo hello A > tmp.txt
将字符串输出重定向,当前目录没有tmp.txt,则创建tmp.txt,并将字符串输出到tmp.txt文件中。

小用法:echo $? 表示前面操作是否成功,成功则返回0,失败则返回非0。$? 代表上一个命令执行后的退出状态

shell中常见: > /dev/null 2>&1

作用主要是 不输出任何信息到终端,即不显示任何信息在屏幕上,参考linux下详解shell中>/dev/null 2>&1

/dev/null :代表空设备文件
> :输出重定向
1 :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 :表示stderr标准错误
& :表示等同于的意思,2>&1,表示2的输出重定向等同于1
至此:
1 > /dev/null 2>&1 语句含义 ↓
1 > /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

7.ps、grep

ps(process status)命令用来列出系统中当前运行的进程列表。
参考 https://www.cnblogs.com/5201351/p/4206461.html
常结合grep搜索使用: ps aux | grep 内容

grep(Global Regular Expression Print)

参考 https://g-ghy.github.io/linux-command/c/grep.html

grep -w 全匹配

8.ser,cliloop

ser,cliloop命令需要自己传入工具包至子机中哈,权限设置没问题即可使用,udp打流工具。参数解释使用命令时即会展示。

srvcmd: ser 8090
clicmd: cliloop 10.0.0.1 8090 1 1 65508 0 0 1 0 0
10.0.0.1(vip) 8090(vport) 1(发包间隔1us) 1(走步起始长度) 65508(走步最大长度+1) 0(0长连接1短连接) 0(打印开关1表示成功也会打印) 1(开启retry,一次走步最多try100次) 0(无限循环) 0(不校验回包)
参考 网络自动化实践 里最后一页的打流工具介绍。

9.服务器文件传输

通用:

参考 超级好用的文件传输命令rz与sz
下载: sz file (send)
上传: rz (receive)

linux 使用tmux/screen/byobu下 rz/sz 文件卡死快速退出方法:

  • 按住Ctrl键, 再按五次x键 (强行终断传输)

使用ift:

相比于rz/sz传输方式,具备更快的传输速度、并且支持大文件传输,亦可视为rz/sz文件传输方式的升级版。
需要先安装好ift,参考 iFt for Win/Mac与服务器互传版本使用指引(原)

Linux → PC传输

执行命令“ft put”或“ftsz”,将文件从执行命令的服务器传出去,支持选择多个目录或多个文件、多个目录+多个文件传输。

PC→ Linux传输

执行命令“ft get”或“ftrz”,将文件传到执行命令的服务器,支持选择多个目录或多个文件、多个目录+多个文件传输。
注:ft get会传到默认路径,如需更改默认路径为当前路径,请输入 ft config local . 进行修改。

10.byobu终端复用

目前的困扰:console不能同时运行子机多个终端,只能通过创建jnsgw规则解决。
byobu该工具可以轻松打开多个窗口并在单个终端连接中运行多个命令,适用需要在单个子机上运行多个窗口的情况。
参考 Byobu的使用教程
centos下安装: yum install byobu
常用命令:
F2 创建新的窗口
F3 回到先前窗口
F4 跳到下一个窗口
F8 重新命名一个窗口
Ctrl + D关闭当前窗口


实际使用下来发现,weterm上进行终端复用很容易错行界面出错卡顿,建议想同时登录子机多个界面的话,通过创建jnsgw规则解决。

11.Linux命令之ip

参考 Linux ip 命令
ip是iproute2软件包里面的一个强大的网络配置工具,用来显示或操作路由、网络设备、策略路由和隧道,它能够替代一些传统的网络管理工具,例如ifconfig、route等。

ip [ OPTIONS ] OBJECT { COMMAND | help }

常用OBJECT:

  • link:网络设备
  • address:设备上的协议(IP或IPv6)地址
  • route:路由表条目

常用命令:

ip a show 查看本地ip及网口信息,eg:ip a show dev bond1

ip link

参考 https://www.cnblogs.com/sudochen/p/15993016.html

link表示link layer的意思,即链路层。该命令用于管理和查看网络接口,甚至可以添加虚拟网络接口,将网络接口分组进行管理。ip link只能看链路层的状态,看不到ip地址。

ip link show                     # 显示网络接口信息
ip link set eth0 up             # 开启网卡
ip link set eth0 down            # 关闭网卡
ip link add NAME type TYPE       #创建新设备

ip addr

ip addr show     # 显示网卡IP信息
ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址

12. 结合ps、grep、awk强制杀掉指定命令进程

ps aux|grep %s|grep -v grep|awk '{print $2}'|xargs kill -9 强制杀死 %s 的进程

从左至右匹配进行

grep %s 过滤出匹配%s的行
grep -v grep 过滤除掉grep该行

awk ; : 一行一行的读取。 参考 Linux awk命令详解

awk '{print $2}' : 打印每行第二个字段

xargs kill -9 命令是用来把前面命令的输出结果(PID)作为”kill -9″命令的参数,并执行该命令

13.brctl命令

参考 https://www.linuxcool.com/brctl

brctl命令用于设置、维护和检查linux内核中的以太网网桥配置。

以太网网桥是一种设备,通常用于将以太网的不同网络连接在一起,以便这些以太网对参与者显示为一个以太网。

创建网桥:brctl addbr br10
删除网桥:brctl delbr br10
将网卡接口接入网桥:brctl addif <device>
删除网桥接入的网卡接口:delif <bridge> <device>
查询网桥信息:brctl show

创建自定义私有网络:
1.创建gre设备
2.创建vbr网桥,连接gre设备
3.创建vpc网络
ip link add gre12345678 type tvpc_gre;ifconfig gre12345678 up
brctl addbr vbr12345678;ifconfig vbr12345678 up;brctl addif vbr12345678 gre12345678
tvpc_add_del add vpc 12345678 gre12345678 0 0 0

14.who

who 命令显示关于当前在本地系统上的所有用户的信息。

img

  • 第一列显示用户名称
  • 第二列显示用户连接方式。Tty意味着用户直接连接到电脑上,而pts意味着远程登录。
  • 第三、四列分别显示日期和时间
  • 第五列显示用户登录IP地址。

who -a:当前用户数量

15.查找命令,find、locate、which、whereis

参考 Linux find 命令详解

参考 linux中whereis、which、find、location的区别和用法

  • find 实际搜寻硬盘查询文件名称。
  • locate 配合数据库查看文件位置。
  • which 查看可执行文件(系统命令)的位置。
  • whereis 查看文件的位置,这些文件应属于原始代码、二进制文件,或是帮助文件。

find

find [paths] [expression] [actions]

expression项有

-name
-size
-path
-type 选项最常用的参数如下:

  • f: 文件
  • d: 目录
  • l: 符号链接
eg:
find /usr -name '*.txt' 查找 /usr 目录下所有文件名以 .txt 结尾的文件
find /usr -name '????' 查找 /usr 目录下所有文件名刚好为 4 个字符的文件

find /usr -path '*/src/*.txt' 查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是src

find / -size +1G 检索文件大小高于 1 GB 的文件

find /usr -type d -name 'python*' 检索 /usr 下所有文件名以 python 开头的目录

locate

locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

$ locate /etc/sh:搜索etc目录下所有以sh开头的文件。

which

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

whereis

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

16.ls

ls命令 就是list的缩写,用来显示目标列表,在Linux中是使用率较高的命令。参考 https://wangchujiang.com/linux-command/c/ls.html

ls --color:彩色目录
ls -l    # 列出当前目录可见文件详细信息
ls -hl   # 列出详细信息并以可读大小显示文件大小
ls -al   # 列出所有文件(包括隐藏)的详细信息
-t     # 按时间信息排序

不同颜色代表的文件类型

  • 蓝色:目录
  • 绿色:可执行文件
  • 白色:一般性文件,如文本文件,配置文件等
  • 红色:压缩文件或归档文件
  • 浅蓝色:链接文件
  • 红色闪烁:链接文件存在问题
  • 黄色:设备文件
  • 青黄色:管道文件

17.nc

18. 修改密码 passwd

19.查看操作日志

据异常时间看下操作日志 vim /var/log/operation/log

20.查看服务器内存和磁盘空间

查看内存空间

free -h

查看磁盘空间 -h利用方便阅读的数据存储单位显示

df -h

内存:cat /proc/meminfo;

cpu:cat /proc/cpuinfo;

使用情况

top

https://www.jianshu.com/p/9242f1844f98

21.ip,路由表

ip route add default dev eth0 via 10.0.0.1 table 10 
ip route add default dev eth1 via 10.0.0.1 table 20 

ip rule add from 10.0.0.90 table 10  
ip rule add from 10.0.0.232 table 20  

ip rule show
ip route show
route -n
cat /etc/iproute2/rt_tables 

ip route list table 10

route:https://www.cnblogs.com/snake-hand/p/3143041.html

https://cloud.tencent.com/developer/article/1521589

https://www.cnblogs.com/wanstack/p/7728785.html

https://zhuanlan.zhihu.com/p/144585950

cat /proc/sys/net/ipv4/icmp_echo_ignore_all 

iptables -S

22.docker

搭建docker

云服务器 搭建 Docker-最佳实践-文档中心-腾讯云 (tencent.com)

23.

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇