Alpine Linux 网络连接工具 - iproute2 / ip ss

本文介绍了Alpine Linux中的iproute2工具,特别是ss命令用于查看网络链接统计和打开的端口,以及ip命令如何显示网卡、IP地址、路由和ARP信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Alpine Linux 实用工具 - iproute2 / ss

iproute2 安装
apk add iprout2
iproute2 命令 ss
Usage: ss [ OPTIONS ]
		       ss [ OPTIONS ] [ FILTER ]
		   -h, --help          this message
		   -V, --version       output version information
		   -n, --numeric       don't resolve service names
		   -r, --resolve       resolve host names
		   -a, --all           display all sockets
		   -l, --listening     display listening sockets
		   -o, --options       show timer information
		   -e, --extended      show detailed socket information
		   -m, --memory        show socket memory usage
		   -p, --processes     show process using socket
		   -i, --info          show internal TCP information
		       --tipcinfo      show internal tipc socket information
		   -s, --summary       show socket usage summary
		   -b, --bpf           show bpf filter socket information
		   -E, --events        continually display sockets as they are destroyed
		   -Z, --context       display process SELinux security contexts
		   -z, --contexts      display process and socket SELinux security contexts
		   -N, --net           switch to the specified network namespace name
		
		   -4, --ipv4          display only IP version 4 sockets
		   -6, --ipv6          display only IP version 6 sockets
		   -0, --packet        display PACKET sockets
		   -t, --tcp           display only TCP sockets
		   -S, --sctp          display only SCTP sockets
		   -u, --udp           display only UDP sockets
		   -d, --dccp          display only DCCP sockets
		   -w, --raw           display only RAW sockets
		   -x, --unix          display only Unix domain sockets
		       --tipc          display only TIPC sockets
		       --vsock         display only vsock sockets
		   -f, --family=FAMILY display sockets of type FAMILY
		       FAMILY := {
   
   inet|inet6|link|unix|netlink|vsock|tipc|help}
		
		   -K, --kill          forcibly close sockets, display what was closed
		   -H, --no-header     Suppress header line
		
		   -A, --query=QUERY, --socket=QUERY
		       QUERY := {
   
   all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram|tipc}[,QUERY]
		
		   -D, --diag=FILE     Dump raw information about TCP sockets to FILE
		   -F, --filter=FILE   read filter information from FILE
		       FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
		       STATE-FILTER := {
   
   all|connected|synchronized|bucket|big|TCP-STATES}
		         TCP-STATES := {
   
   established|syn-sent|syn-recv|fin-wait-{
   
   1,2}|time-wait|closed|close-wait|last-ack|listening|closing}
		          connected := {
   
   established|syn-sent|syn-recv|fin-wait-{
   
   1,2}|time-wait|close-wait|last-ack|closing}
		       synchronized := {
   
   established|syn-recv|fin-wait-{
   
   1,2}|time-wait|close-wait|last-ack|closing}
		             bucket := {
   
   syn-recv|time-wait}
		                big := {
   
   established|syn-sent|fin-wait-{
   
   1,2}|closed|close-wait|last-ack|listening|closing}
  1. 查看网络链接统计
    命令:ss -s

    # ss -s
    Total: 8551
    TCP:   5458 (estab 30, closed 5417, orphaned 5
### 解决 Alpine 镜像中 MySQL 8.0.35 运行时缺少 `libncurses.so.5` 库的问题 当在 Alpine Linux 中尝试启动 MySQL 8.0.35 并遇到如下错误: ``` error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory ``` 这表明系统缺失了必要的动态链接库文件 `libncurses.so.5`。由于 Alpine 使用的是 musl libc 和 busybox 工具集,而大多数其他发行版基于 glibc,因此直接移植某些应用程序可能会遇到依赖项不匹配的情况。 #### 方法一:通过 APK 包管理器安装兼容包 可以考虑安装提供该特定版本 ncurses 库的软件包来解决问题。执行以下命令以确保所需库已正确加载并可用: ```bash apk add --no-cache ncurses-libs=5.9-r4 ``` 注意这里的版本号可能需要根据实际情况调整,因为不同时间点上可用的具体版本会有所变化。如果指定的确切版本不可用,则可省略版本部分让 apk 自动选择最新稳定版: ```bash apk add --no-cache ncurses-libs ``` 此操作将会下载并安装与当前系统架构相适应的 ncurses 库及其头文件,从而满足 MySQL 启动所需的外部依赖条件[^1]。 #### 方法二:创建符号链接指向现有更高版本库 另一种解决方案是在不影响全局环境的前提下为 MySQL 创建一个局部性的修复措施——即建立从旧版本到新版本的软连接。假设已经存在更新版本的 ncurses (比如 v6),那么可以通过这种方式使得程序能够找到期望路径下的共享对象文件: ```bash ln -s /usr/lib/libncursesw.so.6 /usr/lib/libncurses.so.5 ``` 这种方法适用于那些仅需临时绕过版本差异的应用场景,并且不会干扰系统的正常运作或其他服务的功能实现[^2]。 #### 方法三:构建自定义镜像包含所有必需组件 对于更复杂的部署需求或是希望获得长期稳定的运行效果而言,建议基于官方提供的基础镜像自行定制一份包含了全部预设依赖关系的新镜像。这样不仅可以有效规避上述提到的各种潜在冲突问题,还能简化后续维护工作流程。具体做法包括但不限于编写 Dockerfile 文件,在其中声明要安装的一系列额外工具链以及设置合理的环境变量等[^3]。 ```dockerfile FROM alpine:latest RUN apk update && \ apk upgrade && \ apk add --no-cache mysql mysql-client bash tzdata && \ ln -sf /dev/stdout /var/log/mysql/error.log && \ mkdir -p /run/mysqld && chown -R mysql:mysql /run/mysqld && \ mkdir -p /var/lib/mysql && chown -R mysql:mysql /var/lib/mysql CMD ["mysqld"] ``` 以上三种方法均可用于解决 Alpine 上 MySQL 启动失败的问题,可根据实际应用场景和个人偏好灵活选用最合适的处理方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值