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 #取消暂定