侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

不同Linux下 bash: ss: command not found的解决方法

ss简介

ss是socket statistics的缩写,是一个用来显示或设置网络设备的工具,它可以代替传统的netstat命令。ss命令可以操作多种对象,如网络接口、地址、路由、隧道等。ss命令的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快。

可能原因

如果在Linux系统中输入ss命令,出现bash: ss: command not found的错误提示,可能有以下几种原因:

  • ss命令没有安装或没有正确安装在系统中。一些较老的Linux发行版可能没有预装ss命令,或者ss命令的路径没有添加到PATH环境变量中。
  • ss命令被覆盖或删除了。一些恶意软件或误操作可能导致原有的ss命令被修改或删除,从而无法正常执行。
  • ss命令被禁用或限制了。一些系统管理员或安全策略可能禁止或限制普通用户使用ss命令,以防止对网络配置进行非法或不当的修改。

解决方法

方法1 安装软件

如果系统中没有安装ss命令,可以根据不同的Linux发行版使用相应的包管理器来安装。以下是一些常见的Linux发行版及其对应的安装命令:

CentOS 7/8

sudo yum install iproute # iproute包包含了ss命令及其他网络工具

Debian/Ubuntu/Deepin/Kali Linux/Raspbian

sudo apt-get install iproute2 # iproute2包包含了ss命令及其他网络工具

Fedora

sudo dnf install iproute # iproute包包含了ss命令及其他网络工具

Arch Linux

sudo pacman -S iproute2 # iproute2包包含了ss命令及其他网络工具

Alpine Linux

sudo apk add iproute2 # iproute2包包含了ss命令及其他网络工具

Windows (WSL2)

如果你使用的是Windows系统下的WSL2(Windows Subsystem for Linux 2),你可以根据你选择的Linux发行版来安装ss命令,例如:

sudo apt-get install iproute2 # 如果你使用的是Ubuntu发行版

方法2 添加环境变量

如果系统中已经安装了ss命令,但是没有添加到PATH环境变量中,可以通过以下步骤来添加:

  1. 找到ss命令的路径。可以使用find或locate等工具来搜索,例如:
find / -name ss 2>/dev/null # 在根目录下搜索名为ss的文件,并忽略错误信息

一般来说,ss命令的路径是/sbin/ss或/usr/sbin/ss。

  1. 编辑~/.bashrc文件。可以使用vi, nano, gedit等编辑器来编辑,例如:
vi ~/.bashrc # 使用vi编辑器打开~/.bashrc文件
  1. 在文件末尾添加一行,将ss命令的路径添加到PATH环境变量中,例如:
export PATH=$PATH:/sbin # 如果ss命令的路径是/sbin/ss
  1. 保存并退出文件,然后执行以下命令使修改生效:
source ~/.bashrc # 重新加载~/.bashrc文件

方法3 修改执行权限

如果系统中已经安装了ss命令,并且已经添加到PATH环境变量中,但是没有执行权限,可以通过以下步骤来修改:

  1. 找到ss命令的路径。可以使用find或locate等工具来搜索,例如:
find / -name ss 2>/dev/null # 在根目录下搜索名为ss的文件,并忽略错误信息

一般来说,ss命令的路径是/sbin/ss或/usr/sbin/ss。

  1. 使用chmod命令修改ss命令的执行权限,例如:
sudo chmod +x /sbin/ss # 如果ss命令的路径是/sbin/ss,给所有用户添加执行权限

方法4 更换版本或系统

如果以上方法都无法解决问题,可能是由于系统版本过旧或不兼容导致的。可以考虑更换更新或更适合的Linux发行版来使用ss命令。

ss命令常规用法

ss命令名称介绍

ss是socket statistics的缩写,用来表示socket统计信息。ss命令是用来显示或设置网络设备的工具,它可以操作多种对象,如网络接口、地址、路由、隧道等。ss命令可以代替传统的netstat命令,提供更多的功能和灵活性。

语法格式

ss命令的语法格式如下:

ss [选项] [过滤器]

选项可以指定一些输出格式或协议族等参数。过滤器可以指定要操作的网络设备或信息的条件。

选项说明

以下是一些常用的选项及其说明:

  • -h, --help 显示帮助信息
  • -V, --version 显示版本信息
  • -n, --numeric 不解析服务名称,如“22”端口不会显示成“ssh”
  • -r, --resolve 解析主机名称,如“192.168.1.1”会显示成域名
  • -a, --all 显示所有socket
  • -l, --listening 只显示监听状态的socket
  • -o, --options 显示定时器信息
  • -e, --extended 显示详细的socket信息
  • -m, --memory 显示socket使用的内存
  • -p, --processes 显示使用socket的进程
  • -i, --info 显示内部的TCP信息
  • -s, --summary 显示socket使用情况的摘要
  • -4, --ipv4 只显示IPv4协议的socket
  • -6, --ipv6 只显示IPv6协议的socket
  • -0, --packet 只显示PACKET类型的socket
  • -t, --tcp 只显示TCP协议的socket
  • -u, --udp 只显示UDP协议的socket
  • -d, --dccp 只显示DCCP协议的socket
  • -w, --raw 只显示RAW协议的socket
  • -x, --unix 只显示Unix域类型的socket
  • -f, --family=FAMILY 只显示指定类型的socket,如inet, inet6, link等
  • -A, --query=QUERY 只显示指定类型的socket,如all, inet, tcp, udp, raw, unix, packet等

实例

以下是一些常见的ss命令及其实例:

  • 显示所有网络接口及其状态:
ss -l # 简写为 ss l
  • 显示每个进程具体打开的socket:
ss -pl # 需要root权限或sudo权限
  • 显示所有TCP socket:
ss -t -a # 简写为 ss -ta
  • 显示所有UDP socket:
ss -u -a # 简写为 ss -ua
0

评论区