常用命令集合
常用命令集合

常用命令集合

yum/rpm

一.yum
-y 如果有需要按y/n的时候,默认自动选y。
-q 安静模式,不显示安装的过程。
-h 显示帮助信息。
-c 指定配置文件。
-v 详细模式。
-d 设置调试等级,从0到10。
-e 设置错误等级,从0到10。
-R 设置yum处理一个命令的最大等待时间。
-C 完全从缓存中运行,而不去下载或者更新任何头文件。
1.清除缓存
yum clean all
2.加载缓存
yum makecache
3.安装包
yum -y install <package>
4.删除软件包
yum remove <package>
5.更新软件包
yum update <package>
6.列出可以安装的包
yum list <package>


二.rpm
安装:
-i:安装
-v: 详细信息
-vv:更加详细的信息
-h:hash marks 输出进度条:50个#表示进度条
--prefix :安装指定目录
--test:测试安装,检查并报告安装是否完成 --> rpm -ivh --test PACKAGE_FILE ..
--nodeps:忽略依赖关系,不建议操作 --> rpm -ivh --nodepst PACKAGE_FILE
--replacepkgs:重新安装rpm包 --> rpm -ivh --replacepkgs PACKAGE_FILE
--nosignature:不检查签名信息,不检查来源合法性
--nodigest:不检查包完整信息
升级
-U: 升级或者安装
-F:单纯的升级,如果之前没有rpm包将无法升级
--test:测试安装,检查并报告完成 --> rpm -Uvh --test PACKAGE_FILE ..
--nodeps:忽略依赖关系,不建议操作 --> rpm -Uvh --nodepst PACKAGE_FILE
--replacepkgs:重新安装rpm包 --> rpm -ivh --Ueplacepkgs PACKAGE_FILE
--oldpackage::降级操作
--force:强制升级
卸载:
-e:卸载指定程序
-allmatches:卸载所有匹配指定名称的程序包的各个版本
--nodeps:忽略依赖关系
--test:测试卸载,显示依赖关系
查询:
-a.all:查询所有已经安装过的包,后面一般通过管道输出至正则表达式匹配-列如: rpm -qa | grep "^z"
-f FILE:查看指定的文件由哪个程序包安装生产:
-p, --package PACKAGE_FILE:对于未安装的程序包执行查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供
--whatrequlres CAPABILITY:查询指定的-CAPABILITY被哪个程序包依赖
[query-options]
--changelog:查询rpm包的changelog; 历史
-l --list:列出程序包安装生产的文件列表
-i,--info:查询程序包相关的信息,包含版本、信息、时间等等
-c,:查询程序包有哪些指定的配置文件
-d:查询指定的程序包提供的文档信息
--provides:列出指定程程序包的 CAPABILITY
-R,--regulres:查询程序包依赖的包
--scripts:查看程序包自带的脚本片断
1.安装rpm包
rpm -ivh <package.rpm>
2.更新rpm包
rpm -Uvh <package.rpm>
3.卸载
 rpm -e <packages>
4.查询所有安装的包
rpm -qa
5.查询未安装包的详细信息
rpm -qpi <package>
6.查看程序包的相关信息
rpm -qi <package>
7.查看程序包安装产生的文件列表
rpm -ql <package>
8.查看程序包的配置文件
rpm -qc <package>
9.查看程序包提供的文档信息
rpm -qd <package>
10.查询程序包依赖的包
rpm -qR <package>

apt/dpkg


一.apt
-h 本帮助文件。 
-q 输出到日志 - 无进展指示 
-qq 不输出信息,错误除外 
-d 仅下载 - 不安装或解压归档文件 
-s 不实际安装。模拟执行命令
-y 假定对所有的询问选是,不提示 
-f 尝试修正系统依赖损坏处 
-m 如果归档无法定位,尝试继续
-u 同时显示更新软件包的列表 
-b 获取源码包后编译 -V 显示详细的版本号
-c=? 阅读此配置文件
-o=? 设置自定的配置选项,如 -o dir::cache=/tmp
1.列出所有可更新的软件清单命令
apt update
2.升级软件包
apt upgrade
3.列出可更新的软件包及版本信
apt list --upgradeable
4.升级软件包,升级前先删除需要更新软件包
apt full-upgrade
5.安装指定的软件命令
apt install <package_name>
6.安装多个软件包
apt install <package_1> <package_2> <package_3>
7.更新指定的软件命令
sudo apt update <package>
8.删除软件包命令
apt remove <package>
9.清理不再使用的依赖和库文件
apt autoremove <package>
10.移除软件包及配置文件
apt purge <package>
11.查找软件包命令
apt search <keyword>
12.列出所有已安装的
apt list --installed
13.列出所有已安装的包的版本信息
apt list --all-versions

二.dpkg
-i:安装软件包; 
-r:删除软件包; 
-P:删除软件包的同时删除其配置文件; 
-L:显示于软件包关联的文件; 
-l:显示已安装软件包列表; 
--unpack:解开软件包; 
-c:显示软件包内文件列表; 
--confiugre:配置软件包
1.查看命令来自于那个包
dpkg -S <command path>
2.安装软件
dpkg -i <package.deb>
3.列出与该包先关联的文件
dpkg -L <package>
4.显示包的版本
dpkg -l <package>
5.移除软件(保留配置)
dpkg -r <package>
6.移除软件(不保留配置)
dpkg -P <package>
7.查找包的详细信息
dpkg -s <package>
8.解开 deb 包的内容
dpkg –unpack <package.deb>
9.配置包
dpkg –configure <package> 

vim

a   在光标所在字符后插入
A   在光标所在行的行尾插入
i   在光标所在处插入
I   在光标所在行的行首插入
o   在光标下插入新行
O   在光标上插入新行

定位命令
:set nu     显示行号
:set noun   取消行号
gg          到首行
GG或]]      到最后一行
nG          到第n行
:n          到第n行
$           移至尾行
0           移植首行

删除命令
x 删除光标所在处字符,每次删除一个字符;
nx 删除光标所在处后 n 个字符,nX 删除光标所在处前 n 个字符,n 是几就删除光标后几个字符;
dd 删除光标所在的这一行;
D 删除光标所在处到这一行的行尾位置;
ndd 从光标所在行算起,n 是几就删除后面的几行;
dG 删除光标所在的这一行到整个文件的末尾处;
:n1,n2d 删除指定范围的行;
u 如果误删除,可以利用 u 进行回退恢复,相当于 windows 里的 ctrl+z 的作用;

复制和剪切
yy  复制当前行,nyy  复制当前行以下 n 行;然后 p 就可以复制到当前光标处的下一行,P 复制到当前光标处的上一行;
dd  剪切当前行,ndd  剪切当前行以下 n 行;然后 p 就可以复制到当前光标处的下一行,P 复制到当前光标处的上一行;

搜索和搜索替换命令
:%s/old/new  全文替换指定字符串,%s 代表整个全文,把 old 字符串替换成 new 字符串;
:n1,n2s/old/new/g  全文替换指定字符串,n1 是起始行,n2 是终止行;把 old 字符串替换成 new 字符串;g 代表不询问,也可以用 c 代表询问;
r  取代光标所在处的一个字符;后面在输入相当于在光标处后面直接插入;
R  从光标所在处开始替换字符,直到整个行被替换完,后面在输入相当于在光标处后面直接插入,按 ESC 结束;
u  取消上一步操作

保存和退出命令
:w!  保存修改
:q!  不保存修改退出
:wq!   保存修改并退出;或者用 x!,在或者用 ESC+shift+ZZ;
:w 文件名;表示把当前文件的内容另存到指定文件里;相当于备份;

导入命令执行结果到文件里  :r ! 命令
r:代表写入;! 命令:表示命令执行的结果,就相当于我们在终端里直接输入命令一样 
⭐️比如:我们正在编写一个 111 文件 (vim 111),我们想要把当前的时间写入进来;我们需要退出当前编辑的文件,然后在终端输入 date 命令,把结果复制,然后在 vim 111 进入文件,进行粘贴,想一想都麻烦!
⭐️但是如果我们在当前编辑的 111 文件内,直接执行:r!date;就能把时间直接打印到当前光标处!

连续行注释
:n1,n2s/^/#/g
⭐️对于 Linux 来说,注释符是 #;这里和搜索替换的用法很相似,我们就先解读一下:把 n1 起始行和 n2 终止行里面的内容进行注释 (#);^(尖角号) 代表移到首行字符并进入插入模式;# 是把注释符 #插入进去;g 代表不询问;
:n1,n2s/^#//g
⭐️表示把首行的注释符 #取消掉;相当于把首行的 #替换成空;

网络

IP

Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
                   tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
                   netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
                   vrf | sr | nexthop }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -h[uman-readable] | -iec | -j[son] | -p[retty] |
                    -f[amily] { inet | inet6 | mpls | bridge | link } |
                    -4 | -6 | -I | -D | -M | -B | -0 |
                    -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
                    -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
                    -rc[vbuf] [size] | -n[etns] name | -N[umeric] | -a[ll] |
                    -c[olor]}

OPTIONS#
-b, -batch <FILENAME>: 从提供的文件或标准输入读取命令并调用它们,第一次失败将导致ip执行终止。
-force: 不要在批处理模式下因错误而终止ip,如果在执行命令期间发生任何错误,则应用程序返回码将为非零。
-s, -stats, -statistics: 输出更多信息,如果该选项出现两次或更多次,则信息量会增加,通常,信息是统计信息或一些时间值。
-l, -loops <COUNT>: 指定ip addr flush逻辑在放弃之前尝试的最大循环数,默认值为10,0表示循环直到删除所有地址。
-f, -family <FAMILY>: 指定使用的协议族,协议族标识符可以是inet、inet6、bridge、ipx、dnet或link中的一个,如果该选项不存在,则根据其他参数猜测协议族,如果命令行的其余部分没有提供足够的信息来猜测家族,ip将退回到默认的ip设置,通常是inet或any,link是一种特殊的族标识符,不涉及任何网络协议。
-4: -family inet的快捷方式。
-6: -family inet6的快捷方式。
-B: -family bridge的快捷方式。
-D: -family decnet的快捷方式。
-I: -family ipx的快捷方式。
-0: -family link的快捷方式。
-o, -oneline: 将每条记录输出为一行,用\字符替换换行符,当使用wc计数记录或grep输出时,这很方便。
-r, -resolve: 使用系统的名称解析程序打印DNS名称而不是主机地址。
-V, -Version: 输出版本信息。
OBJECT#
address: 设备上的协议地址,IP或IPv6。
addrlabel: 用于协议地址选择的标签配置。
l2tp: IP隧道以太网L2TPv3。
link: 网络设备。
maddress: 多播地址。
monitor: 监视netlink消息。
mroute: 多播路由缓存项。
mrule: 多播路由策略数据库中的规则。
neighbour: 管理ARP或NDISC缓存项。
netns: 管理网络名称空间。
ntable: 管理邻居缓存的操作。
route: 路由表条目。
rule: 路由策略数据库中的规则。
tcp_metrics/tcpmetrics: 管理TCP指标。
tunnel: IP隧道。
tuntap: 管理TUN/TAP设备。
xfrm: 管理IPSec策略。

1.显示所有网卡和ip配置
ip a
2.显示指定网卡ifname信息
ip a show  <ifname>
3.显示指定类型的网络
ip a show type <type>
4.显示网卡连接状态
ip link 
5.更改NIC链接状态up/down
ip link set <ifname> <up/down>
6.临时分配/添加IPv4和IPv6地址
ip a a <IP>/<perfix> dev <ifname>
7.删除Pv4和IPv6地址
ip a d <IP>/<perfix> dev <ifname>
8.清除所有分配的地址
ip addr flush dev <ifname>
9.查看网络统计
ip -s  link
10.列出Linux系统上所有可用的路由
ip route
11.查看arp条目
ip neigh

ifconfig(旧命令,目前已被ip命令替代,少数用于查ip)

用法:
  ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
  [add <address>[/<prefixlen>]]
  [del <address>[/<prefixlen>]]
  [[-]broadcast [<address>]]  [[-]pointopoint [<address>]]
  [netmask <address>]  [dstaddr <address>]  [tunnel <address>]
  [outfill <NN>] [keepalive <NN>]
  [hw <HW> <address>]  [mtu <NN>]
  [[-]trailers]  [[-]arp]  [[-]allmulti]
  [multicast] [[-]promisc]
  [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
  [txqueuelen <NN>]
  [[-]dynamic]
  [up|down] ...

1.查看网络信息
ifconfig

nmcli(仅适用于红帽系列)

Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
  -a, --ask                                ask for missing parameters
  -c, --colors auto|yes|no                 whether to use colors in output
  -e, --escape yes|no                      escape columns separators in values
  -f, --fields <field,...>|all|common      specify fields to output
  -g, --get-values <field,...>|all|common  shortcut for -m tabular -t -f
  -h, --help                               print this help
  -m, --mode tabular|multiline             output mode
  -o, --overview                           overview mode
  -p, --pretty                             pretty output
  -s, --show-secrets                       allow displaying passwords
  -t, --terse                              terse output
  -v, --version                            show program version
  -w, --wait <seconds>                     set timeout waiting for finishing operations

OBJECT
  g[eneral]       NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]         NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager
  a[gent]         NetworkManager secret agent or polkit agent
  m[onitor]       monitor NetworkManager changes

1.添加网络配置(以下仅是案例,配置选项很多具体情况具体分析)
nmcli connection add ifname <ifname> con-name <ifname> type ethernet ipv4.method manual ipv4.addresses <ip>/<umask> ipv4.gateway <gateway> ipv4.dns <dns> autoconnect yes 
3.重新加载配置文件
nmcli connection reload
4.启动和停止网卡
nmcli connection <up/donw> <ifname>

netplan apply(仅适用于ubuntu系列)

#重新读取网络配置文件
netplan apply

ethtool

ethtool version 5.13
Usage:
        ethtool [ FLAGS ] DEVNAME	Display standard information about device
        ethtool [ FLAGS ] -s|--change DEVNAME	Change generic options
		[ speed %d ]
		[ lanes %d ]
		[ duplex half|full ]
		[ port tp|aui|bnc|mii|fibre|da ]
		[ mdix auto|on|off ]
		[ autoneg on|off ]
		[ advertise %x[/%x] | mode on|off ... [--] ]
		[ phyad %d ]
		[ xcvr internal|external ]
		[ wol %d[/%d] | p|u|m|b|a|g|s|f|d... ]
		[ sopass %x:%x:%x:%x:%x:%x ]
		[ msglvl %d[/%d] | type on|off ... [--] ]
		[ master-slave preferred-master|preferred-slave|forced-master|forced-slave ]
        ethtool [ FLAGS ] -a|--show-pause DEVNAME	Show pause options
        ethtool [ FLAGS ] -A|--pause DEVNAME	Set pause options
		[ autoneg on|off ]
		[ rx on|off ]
		[ tx on|off ]
        ethtool [ FLAGS ] -c|--show-coalesce DEVNAME	Show coalesce options
        ethtool [ FLAGS ] -C|--coalesce DEVNAME	Set coalesce options
		[adaptive-rx on|off]
		[adaptive-tx on|off]
		[rx-usecs N]
		[rx-frames N]
		[rx-usecs-irq N]
		[rx-frames-irq N]
		[tx-usecs N]
		[tx-frames N]
		[tx-usecs-irq N]
		[tx-frames-irq N]
		[stats-block-usecs N]
		[pkt-rate-low N]
		[rx-usecs-low N]
		[rx-frames-low N]
		[tx-usecs-low N]
		[tx-frames-low N]
		[pkt-rate-high N]
		[rx-usecs-high N]
		[rx-frames-high N]
		[tx-usecs-high N]
		[tx-frames-high N]
		[sample-interval N]
        ethtool [ FLAGS ] -g|--show-ring DEVNAME	Query RX/TX ring parameters
        ethtool [ FLAGS ] -G|--set-ring DEVNAME	Set RX/TX ring parameters
		[ rx N ]
		[ rx-mini N ]
		[ rx-jumbo N ]
		[ tx N ]
        ethtool [ FLAGS ] -k|--show-features|--show-offload DEVNAME	Get state of protocol offload and other features
        ethtool [ FLAGS ] -K|--features|--offload DEVNAME	Set protocol offload and other features
		FEATURE on|off ...
        ethtool [ FLAGS ] -i|--driver DEVNAME	Show driver information
        ethtool [ FLAGS ] -d|--register-dump DEVNAME	Do a register dump
		[ raw on|off ]
		[ file FILENAME ]
        ethtool [ FLAGS ] -e|--eeprom-dump DEVNAME	Do a EEPROM dump
		[ raw on|off ]
		[ offset N ]
		[ length N ]
        ethtool [ FLAGS ] -E|--change-eeprom DEVNAME	Change bytes in device EEPROM
		[ magic N ]
		[ offset N ]
		[ length N ]
		[ value N ]
        ethtool [ FLAGS ] -r|--negotiate DEVNAME	Restart N-WAY negotiation
        ethtool [ FLAGS ] -p|--identify DEVNAME	Show visible port identification (e.g. blinking)
               [ TIME-IN-SECONDS ]
        ethtool [ FLAGS ] -t|--test DEVNAME	Execute adapter self test
               [ online | offline | external_lb ]
        ethtool [ FLAGS ] -S|--statistics DEVNAME	Show adapter statistics
               [ --all-groups | --groups [eth-phy] [eth-mac] [eth-ctrl] [rmon] ]
        ethtool [ FLAGS ] --phy-statistics DEVNAME	Show phy statistics
        ethtool [ FLAGS ] -n|-u|--show-nfc|--show-ntuple DEVNAME	Show Rx network flow classification options or rules
		[ rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6 [context %d] |
		  rule %d ]
        ethtool [ FLAGS ] -N|-U|--config-nfc|--config-ntuple DEVNAME	Configure Rx network flow classification options or rules
		rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|r... [context %d] |
		flow-type ether|ip4|tcp4|udp4|sctp4|ah4|esp4|ip6|tcp6|udp6|ah6|esp6|sctp6
			[ src %x:%x:%x:%x:%x:%x [m %x:%x:%x:%x:%x:%x] ]
			[ dst %x:%x:%x:%x:%x:%x [m %x:%x:%x:%x:%x:%x] ]
			[ proto %d [m %x] ]
			[ src-ip IP-ADDRESS [m IP-ADDRESS] ]
			[ dst-ip IP-ADDRESS [m IP-ADDRESS] ]
			[ tos %d [m %x] ]
			[ tclass %d [m %x] ]
			[ l4proto %d [m %x] ]
			[ src-port %d [m %x] ]
			[ dst-port %d [m %x] ]
			[ spi %d [m %x] ]
			[ vlan-etype %x [m %x] ]
			[ vlan %x [m %x] ]
			[ user-def %x [m %x] ]
			[ dst-mac %x:%x:%x:%x:%x:%x [m %x:%x:%x:%x:%x:%x] ]
			[ action %d ] | [ vf %d queue %d ]
			[ context %d ]
			[ loc %d]] |
		delete %d
        ethtool [ FLAGS ] -T|--show-time-stamping DEVNAME	Show time stamping capabilities
        ethtool [ FLAGS ] -x|--show-rxfh-indir|--show-rxfh DEVNAME	Show Rx flow hash indirection table and/or RSS hash key
		[ context %d ]
        ethtool [ FLAGS ] -X|--set-rxfh-indir|--rxfh DEVNAME	Set Rx flow hash indirection table and/or RSS hash key
		[ context %d|new ]
		[ equal N | weight W0 W1 ... | default ]
		[ hkey %x:%x:%x:%x:%x:.... ]
		[ hfunc FUNC ]
		[ delete ]
        ethtool [ FLAGS ] -f|--flash DEVNAME	Flash firmware image from the specified file to a region on the device
               FILENAME [ REGION-NUMBER-TO-FLASH ]
        ethtool [ FLAGS ] -P|--show-permaddr DEVNAME	Show permanent hardware address
        ethtool [ FLAGS ] -w|--get-dump DEVNAME	Get dump flag, data
		[ data FILENAME ]
        ethtool [ FLAGS ] -W|--set-dump DEVNAME	Set dump flag of the device
		N
        ethtool [ FLAGS ] -l|--show-channels DEVNAME	Query Channels
        ethtool [ FLAGS ] -L|--set-channels DEVNAME	Set Channels
               [ rx N ]
               [ tx N ]
               [ other N ]
               [ combined N ]
        ethtool [ FLAGS ] --show-priv-flags DEVNAME	Query private flags
        ethtool [ FLAGS ] --set-priv-flags DEVNAME	Set private flags
		FLAG on|off ...
        ethtool [ FLAGS ] -m|--dump-module-eeprom|--module-info DEVNAME	Query/Decode Module EEPROM information and optical diagnostics if available
		[ raw on|off ]
		[ hex on|off ]
		[ offset N ]
		[ length N ]
		[ page N ]
		[ bank N ]
		[ i2c N ]
        ethtool [ FLAGS ] --show-eee DEVNAME	Show EEE settings
        ethtool [ FLAGS ] --set-eee DEVNAME	Set EEE settings
		[ eee on|off ]
		[ advertise %x ]
		[ tx-lpi on|off ]
		[ tx-timer %d ]
        ethtool [ FLAGS ] --set-phy-tunable DEVNAME	Set PHY tunable
		[ downshift on|off [count N] ]
		[ fast-link-down on|off [msecs N] ]
		[ energy-detect-power-down on|off [msecs N] ]
        ethtool [ FLAGS ] --get-phy-tunable DEVNAME	Get PHY tunable
		[ downshift ]
		[ fast-link-down ]
		[ energy-detect-power-down ]
        ethtool [ FLAGS ] --get-tunable DEVNAME	Get tunable
		[ rx-copybreak ]
		[ tx-copybreak ]
		[ pfc-precention-tout ]
        ethtool [ FLAGS ] --set-tunable DEVNAME	Set tunable
		[ rx-copybreak N]
		[ tx-copybreak N]
		[ pfc-precention-tout N]
        ethtool [ FLAGS ] --reset DEVNAME	Reset components
		[ flags %x ]
		[ mgmt ]
		[ mgmt-shared ]
		[ irq ]
		[ irq-shared ]
		[ dma ]
		[ dma-shared ]
		[ filter ]
		[ filter-shared ]
		[ offload ]
		[ offload-shared ]
		[ mac ]
		[ mac-shared ]
		[ phy ]
		[ phy-shared ]
		[ ram ]
		[ ram-shared ]
		[ ap ]
		[ ap-shared ]
		[ dedicated ]
		[ all ]
        ethtool [ FLAGS ] --show-fec DEVNAME	Show FEC settings
        ethtool [ FLAGS ] --set-fec DEVNAME	Set FEC settings
		[ encoding auto|off|rs|baser|llrs [...]]
        ethtool [ FLAGS ] -Q|--per-queue DEVNAME	Apply per-queue command. 
The supported sub commands include --show-coalesce, --coalesce             [queue_mask %x] SUB_COMMAND
        ethtool [ FLAGS ] --cable-test DEVNAME	Perform a cable test
        ethtool [ FLAGS ] --cable-test-tdr DEVNAME	Print cable test time domain reflectrometery data
		[ first N ]
		[ last N ]
		[ step N ]
		[ pair N ]
        ethtool [ FLAGS ] --show-tunnels DEVNAME	Show NIC tunnel offload information
        ethtool [ FLAGS ] -h|--help 		Show this help
        ethtool [ FLAGS ] --version 		Show version number
        ethtool --monitor               Show kernel notifications
                ( [ --all ]
                  | -s | --change
                  | -s | --change
                  | -s | --change
                  | -s | --change
                  | -k | --show-features | --show-offload | -K | --features | --offload
                  | --show-priv-flags | --set-priv-flags
                  | -g | --show-ring | -G | --set-ring
                  | -l | --show-channels | -L | --set-channels
                  | -c | --show-coalesce | -C | --coalesce
                  | -a | --show-pause | -A | --pause
                  | --show-eee | --set-eee
                  | --cable-test
                  | --cable-test-tdr )
                [ DEVNAME | * ]

FLAGS:
	--debug MASK	turn on debugging messages
	--json		enable JSON output format (not supported by all commands)
	-I|--include-statistics		request device statistics related to the command (not supported by all commands)

mii-tool

usage: mii-tool [-VvRrwl] [-A media,... | -F media] [-p addr] <interface ...>
       -V, --version               display version information
       -v, --verbose               more verbose output
       -R, --reset                 reset MII to poweron state
       -r, --restart               restart autonegotiation
       -w, --watch                 monitor for link status changes
       -l, --log                   with -w, write events to syslog
       -A, --advertise=media,...   advertise only specified media
       -F, --force=media           force specified media technology
       -p, --phy=addr              set PHY (MII address) to report
media: 1000baseTx-HD, 1000baseTx-FD,
       100baseT4, 100baseTx-FD, 100baseTx-HD,
       10baseT-FD, 10baseT-HD,
       (to advertise both HD and FD) 1000baseTx, 100baseTx, 10baseT

iftop(查看网络资源使用情况)

iftop: display bandwidth usage on an interface by host

Synopsis: iftop -h | [-npblNBP] [-i interface] [-f filter code]
                               [-F net/mask] [-G net6/mask6]

   -h                  display this message
   -n                  don't do hostname lookups
   -N                  don't convert port numbers to services
   -p                  run in promiscuous mode (show traffic between other
                       hosts on the same network segment)
   -b                  don't display a bar graph of traffic
   -B                  Display bandwidth in bytes
   -i interface        listen on named interface
   -f filter code      use filter code to select packets to count
                       (default: none, but only IP packets are counted)
   -F net/mask         show traffic flows in/out of IPv4 network
   -G net6/mask6       show traffic flows in/out of IPv6 network
   -l                  display and count link-local IPv6 traffic (default: off)
   -P                  show ports as well as hosts
   -m limit            sets the upper limit for the bandwidth scale
   -c config file      specifies an alternative configuration file
   -t                  use text interface without ncurses

   Sorting orders:
   -o 2s                Sort by first column (2s traffic average)
   -o 10s               Sort by second column (10s traffic average) [default]
   -o 40s               Sort by third column (40s traffic average)
   -o source            Sort by source address
   -o destination       Sort by destination address

   The following options are only available in combination with -t
   -s num              print one single text output afer num seconds, then quit
   -L num              number of lines to print

iftop, version 1.0pre4
copyright (c) 2002 Paul Warren <pdw@ex-parrot.com> and contributors

ab(网络压测工具)

Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
    -n requests     Number of requests to perform
    -c concurrency  Number of multiple requests to make at a time
    -t timelimit    Seconds to max. to spend on benchmarking
                    This implies -n 50000
    -s timeout      Seconds to max. wait for each response
                    Default is 30 seconds
    -b windowsize   Size of TCP send/receive buffer, in bytes
    -B address      Address to bind to when making outgoing connections
    -p postfile     File containing data to POST. Remember also to set -T
    -u putfile      File containing data to PUT. Remember also to set -T
    -T content-type Content-type header to use for POST/PUT data, eg.
                    'application/x-www-form-urlencoded'
                    Default is 'text/plain'
    -v verbosity    How much troubleshooting info to print
    -w              Print out results in HTML tables
    -i              Use HEAD instead of GET
    -x attributes   String to insert as table attributes
    -y attributes   String to insert as tr attributes
    -z attributes   String to insert as td or th attributes
    -C attribute    Add cookie, eg. 'Apache=1234'. (repeatable)
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                    Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                    are a colon separated username and password.
    -P attribute    Add Basic Proxy Authentication, the attributes
                    are a colon separated username and password.
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature
    -d              Do not show percentiles served table.
    -S              Do not show confidence estimators and warnings.
    -q              Do not show progress when doing more than 150 requests
    -l              Accept variable document length (use this for dynamic pages)
    -g filename     Output collected data to gnuplot format file.
    -e filename     Output CSV file with percentages served
    -r              Don't exit on socket receive errors.
    -m method       Method name
    -h              Display usage information (this message)
    -I              Disable TLS Server Name Indication (SNI) extension
    -Z ciphersuite  Specify SSL/TLS cipher suite (See openssl ciphers)
    -f protocol     Specify SSL/TLS protocol
                    (SSL2, TLS1, TLS1.1, TLS1.2 or ALL)
    -E certfile     Specify optional client certificate chain and private key

下面我们对这些参数进行相关说明。如下:
-n:在测试会话中所执行的请求个数。默认时,仅执行一个请求。

-c:一次产生的请求个数。默认是一次一个。

ab -c 100 -n 200 http://192.168.197.138/
上面的语句表示有100个并发访问,每秒总共有200个请求,在此情况下进行压力测试。

-t:测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。

-p:包含了需要POST的数据的文件。

-P:对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送。

-T:POST数据所使用的Content-type头信息。

-v:设置显示信息的详细程度-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。

-V:显示版本号并退出。

-w:以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。

-i:执行HEAD请求,而不是GET。

-x:设置<table>属性的字符串。

-X:对请求使用代理服务器。

-y:设置<tr>属性的字符串。

-z:设置<td>属性的字符串。

-C:对请求附加一个Cookie:行。其典型形式是name=value的一个参数对,此参数可以重复。

-H:对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如,"Accept-Encoding:zip/zop;8bit")。

-A:对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。

-h:显示使用方法。

-d:不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。

-e:产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。

-g:把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。

-i:执行HEAD请求,而不是GET。

-k:启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。

-q:如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。
四、ab性能指标
在进行性能测试过程中有几个指标比较重要:

1、吞吐率(Requests per second)
服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。

记住:吞吐率是基于并发用户数的。这句话代表了两个含义:
a、吞吐率和并发用户数相关
b、不同的并发用户数下,吞吐率一般是不同的

计算公式:总请求数/处理完成这些请求数所花费的时间,即
Request per second=Complete requests/Time taken for tests

必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。

2、并发连接数(The number of concurrent connections)
并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

3、并发用户数(Concurrency Level)
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在HTTP/1.1下,IE7支持两个并发连接,IE8支持6个并发连接,FireFox3支持4个并发连接,所以相应的,我们的并发用户数就得除以这个基数。

4、用户平均请求等待时间(Time per request)

计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)

5、服务器平均请求等待时间(Time per request:across all concurrent requests)

计算公式:处理完成所有请求数所花费的时间/总请求数,即:
Time taken for/testsComplete requests
可以看到,它是吞吐率的倒数。

同时,它也等于用户平均请求等待时间/并发用户数,即
Time per request/Concurrency Level

五、ab实际使用
1、ab的命令参数比较多,我们经常使用的是-c和-n参数。

我们现在就来测试apache的性能。使用如下命令:

$ ab -n 100 -c 10 <url>

-n 100表示请求总数为100
-c 10表示并发用户数为10
<url>表示请求的目标URL

这行表示处理100个请求并每次同时运行10次请求。

docker

docker镜像管理

一.查询镜像
1.查询<name>镜像)
docker search <name>
2.搜索点赞100个以上的镜像
docker search --filter=stars=100 <name>

二.拉取镜像
docker pull <name>:<version> (拉取<name>:<version> 镜像)

三.查看本地镜像
docker images
ls /var/lib/docker/overlay2/ (镜像存储路径)

四.显示镜像详细信息
docker inspect alpine

五.单个镜像导出
docker save <name>:<version> -o ubuntu.tar
docker save <name>:<version> >  ubuntu.tar

六.镜像批量导出
1.批量全部单个打包
docker images | awk 'NR!=1{print $1,$2}' | while read repo tag ;do docker save $repo:$tag -o /opt/$repo-$tag.tar ;done
for i in docker image ls --format "{{.Repository}}:{{.Tag}}";do docker save $i -o echo $i|cut -d: -f1.tar ;done

2.批量全部组合打包
docker save docker images -qa -o all.tar
docker save docker images | awk 'NR!=1{print $1":"$2}' -o all.tar
docker image save docker image ls --format "{{.Repository}}:{{.Tag}}" -o all.tar

七.导入镜像(压缩后的也可以直接导入)
docker load -i <name>.tar
docker load <  <name>.tar.gz

八.删除镜像
1.删除标签
docker rmi <name>:<version>  
2.删除镜像慎用
docker rmi <IMAGE ID>  
3.强制删除(若镜像被容器占用,则是假删除,实际不释放空间,除非删除容器才会释放删除镜像)
docker rmi -f <IMAGE ID> 
4.删除所有镜像
docker rmi -f docker images -q
5.删除不使用的镜像
docker image prune -a
6.删除<none>:<none>的镜像
docker image prune

九.镜像打标签
docker tag <name>:<version> <new name>:<new version>

十.构建镜像
1.基于运行起来的容器构建镜像(描述test,作者sh,指定CMD命令为/bin/bash)
docker commit -m "test" -a "sh" -c "CMD /bin/bash" <container> <image>:<tag> 
2.基于Dockerfile构建镜像(Dockerfile文件名按照规范命名,构建命令是只有先当前目录,否则则要写文件名)
docker build -t <image>:<tag> .
docker build 说明:
PATH | URL | - #可以使是本地路径,也可以是URL路径。若设置为 - ,则从标准输入获取Dockerfile的内容
-f, --file string #Dockerfile文件名,默认为 PATH/Dockerfile
--force-rm #总是删除中间层容器,创建镜像失败时,删除临时容器
--no-cache #不使用之前构建中创建的缓存
-q --quiet=false #不显示Dockerfile的RUN运行的输出结果
--rm=true #创建镜像成功时,删除临时容器
-t --tag list #设置注册名称、镜像名称、标签。格式为 <注册名称>/<镜像名称>:<标签>(标签默认为latest)

docker容器管理

一.运行容器
docker run [选项] [镜像名] [shell命令] [参数]
#选项:
-i, #--interactive Keep STDIN open even if not attached,通常和-t一起使用
-t, #--tty 分配pseudo-TTY,通常和-i一起使用,注意对应的容器必须运行shell才支持进入
-d, #--detach Run container in background and print container ID,台后运行,默认前台
--name #string Assign a name to the container 指定容器名称
--h, #--hostname string Container host name   指定容器hostname
--rm #Automatically remove the container when it exits 运行完后删除容器
-p, #--publish list Publish a container's port(s) to the host 指定端口映射
-P, #--publish-all Publish all exposed ports to random ports 随意映射端口
--dns #list Set custom DNS servers 指定dns
--entrypoint #string Overwrite the default ENTRYPOINT of the image 指定entrypoint值覆盖原dockerfile中的entrypoint
--restart #policy 配置重启策略
--privileged #Give extended privileges to container  给容器真root权限慎用,会影响宿主机
-e, --env=[] #Set environment variables 修改容器的环境变量
--env-file=[] #Read in a line delimited file of environment variables 以文件方式修改容器环境变量
1.启动容器时会自动随机字符作为容器名
docker run <image>
2.基于image镜像运后台行名为name的容器并实现开机自启动,映射宿主机和容器的端口
docker run -d --name <name> --restart=always -p <sport>:<cport> <image>
3.运行一个容器并执行sleep 1000命令,命令结束退出后自动删除容器
docker run --rm <image> sleep 1000 

二.查看容器信息
1.查看所有状态的容器
docker ps -a
2.查看正在运行的容器(包含被挂起的容器)
docker ps
3.查看所有容器并显示他们的大小
docker ps -as
4.查看所有容器的
docker ps -aq
5.查看所有退出的容器
docker ps -f 'status=exited'
5.查看所有正在运行的容器
docker ps -f 'status=running'
5.显示容器内进程
docker top <container>
6.显示容器资源使用情况
docker stats <container>
7.只显示一次容器资源使用情况
docker stats --no-stream <container>
8.查看容器的详细信息
docker inspect <container>
9.查看容器内指定信息info(注意替换这里的info指定为要查的选项)
docker inspect -f "{{.info}}"  <container>

三.删除容器
1.删除指定容器
docker rm <container>
2.强制删除容器
docker rm -f <container>
3.强制删除所有容器(慎用,一般用于测试)
docker rm -f docker ps -qa

四.容器的启停管理
1.启动容器
docker start <container>
2.关闭容器
docker stop <container>
3.重启容器
docker restart <container>
4.挂停止容器
docker pause <container>
5.解除挂起状态
docker unpause <container>

五.给容器发信号
1.发送信号关闭容器
docker kill <container>

六.进入正在运行的容器
1.以bash类型进入容器
docker exec -it <container> bash

七.暴露端口
1.宿主机随机映射端口
docker run -d  --name <name> -P <container>
2.指定端口映射
docker run -d  --name <name> -p 80:80 <container>

八.指定DNS
1.指定多个dns
docker run  --dns 1.1.1.1 --dns 8.8.8.8 <container>

九.指定domain
1.指定多个domain
docker run --dns-search a.com --dns-search b.com <container>

十.拷贝文件
1.宿主机文件拷贝的容器的根目录
docker cp /etc/hosts  <container>:/
2.容器内文件拷贝的宿主机当前目录
docker cp <container>:/etc/hosts . 

十一.传递环境变量
1.传递MySQL环境变量(环境变量必须时Dockerfile内提前写好的才能替换)
docker run --name mysql-test1 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=123456 -d -p 3306:3306 mysql:5.7.30 #传递环境变修改root密码创建数据库,创建数据库用户和密码

十二.清除不再使用的容器
1.慎用,删除不使用的容器
docker system prune 

Docker持久化

一.匿名卷
1.指定容器挂载目录,宿主机自动生成随机编号的数据卷进行挂载
docker run -v <dir> <image>:<tag>

二.命名卷
1.指定数据卷名称和容器挂载目录进行挂载(数据卷这里可以自动创建也可以使用docker volume create 创建)
docker run -v <volumename>:<dir> <image>:<tag>

三.目录挂载
1.指定宿主机目录和容器目录进行挂载
docker run -v <sdir>:<cdir> <image>:<tag>

四.数据卷容器
1.指定一个正在运行的容器,和他进行同样的持久化配置
docker run -volumes-from <container> <image>:<tag>

Docker网络管理

一.bridge(默认)
1.默认模式容器网卡桥接到docker0上,可以不写命令指定
docker run --network bridge <image>:<tag>

二.host
1.和宿主机使用同一个网卡,网络配置
docker run --network host <image>:<tag>

三.None
1.没有网卡和网络配置
docker run --network None <image>:<tag>

四.container
1.和另一个正在运行容器使用同一个网卡和网络配置
docker run -d --network container:<container>  <image>:<tag>

五.自定义模式
1.自定义网络模式
docker network create --subnet <net> --gateway <gateway> <netname>
docker run --network <netname> <image>:<tag>

Docker Compose

docker-compose --help
Define and run multi-container applications with Docker.
Usage:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
#选项说明:
-f,–file FILE #指定Compose 模板文件,默认为docker-compose.yml
-p,–project-name NAME #指定项目名称,默认将使用当前所在目录名称作为项目名。
--verbose #显示更多输出信息
--log-level LEVEL #定义日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--no-ansi #不显示ANSI 控制字符
-v, --version #显示版本
#以下为命令选项,需要在docker-compose.yml|yaml 文件所在在目录里执行
config -q #查看当前配置,没有错误不输出任何信息
up #创建并启动容器
build #构建镜像
bundle #从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备
份文件
create #创建服务
down #停止和删除所有容器、网络、镜像和卷
events #从容器接收实时事件,可以指定json 日志格式
exec #进入指定容器进行操作
help #显示帮助细信息
images #显示镜像信息
kill #强制终止运行中的容器
logs #查看容器的日志
pause #暂停服务
port #查看端口
ps #列出容器
pull #重新拉取镜像,镜像发生变化后,需要重新拉取镜像
push #上传镜像
restart #重启服务
rm #删除已经停止的服务
run #一次性运行容器
scale #设置指定服务运行的容器个数,新版已废弃
start #启动服务
stop #停止服务
top #显示容器运行状态
unpause #取消暂定