netstat -an中stat含义

本文详细解释了netstat命令中各种连接状态的含义,包括ESTABLISHED、SYN_SENT、SYN_RECV等,帮助读者理解TCP连接的不同阶段。
原贴:http://blog.zhangjianfeng.com/?p=410

netstat -an中stat含义

LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态

其实可以man netstat , 看其中的stat部分解释
State
       The  state of the socket. Since there are no states in raw mode and usually no states used in UDP, this column may be left
       blank. Normally this can be one of several values:
       ESTABLISHED
              The socket has an established connection.
       SYN_SENT
              The socket is actively attempting to establish a connection.
       SYN_RECV
              A connection request has been received from the network.
       FIN_WAIT1
              The socket is closed, and the connection is shutting down.
       FIN_WAIT2
              Connection is closed, and the socket is waiting for a shutdown from the remote end.
       TIME_WAIT
              The socket is waiting after close to handle packets still in the network.
       CLOSED The socket is not being used.
       CLOSE_WAIT
              The remote end has shut down, waiting for the socket to close.
       LAST_ACK
              The remote end has shut down, and the socket is closed. Waiting for acknowledgement.
       LISTEN The socket is listening for incoming connections.  Such sockets are not included in the output unless  you  specify
              the –listening (-l) or –all (-a) option.
       CLOSING
              Both sockets are shut down but we still don't have all our data sent.
       UNKNOWN
              The state of the socket is unknown.

 
这是一个文件操作错误:您试图移动一个不存在的 JAR 文件,导致 `mv` 命令失败。 因此,该问题属于:**普通文本型** --- ### ❌ 错误原因 执行命令: ```bash mv slf4j-log4j12-1.7.25.jar backup/ ``` 报错: ``` mv: 无法获取"slf4j-log4j12-1.7.25.jar" 的文件状态(stat): 没有那个文件或目录 ``` 说明:当前目录 `/export/server/hive/lib` 下 **不存在名为 `slf4j-log4j12-1.7.25.jar` 的文件**。 --- ### ✅ 正确解决步骤 #### ✅ 第一步:确认当前目录中是否存在该文件 ```bash ls -l /export/server/hive/lib/slf4j-*.jar ``` 或更宽泛地搜索: ```bash find /export/server/hive/lib -name "slf4j*.jar" 2>/dev/null ``` 常见输出可能为: ``` /export/server/hive/lib/log4j-slf4j-impl-2.18.0.jar /export/server/hive/lib/slf4j-api-1.7.25.jar ``` > ⚠️ 注意区别: - `slf4j-log4j12-1.7.25.jar` → 实现类(绑定 Log4j1),**可能导致冲突** - `slf4j-api-1.7.25.jar` → 接口包,**必须保留** - `log4j-slf4j-impl-2.18.0.jar` → Log4j2 的 SLF4J 实现,**Hive 使用它** 所以您要找的 `slf4j-log4j12-1.7.25.jar` 并不在 Hive 的 lib 目录中。 --- #### ✅ 第二步:为什么会出现 SLF4J 冲突警告? 虽然 Hive 自身没有这个 jar,但 **Hadoop 的 classpath 被加载了**,尤其是在运行脚本时通过环境变量引入。 查看 Hive 启动脚本是否引用 Hadoop 的库: ```bash cat /export/server/hive/bin/hive | grep HADOOP ``` 通常会发现它调用了 Hadoop 的命令,从而将以下路径加入 classpath: ``` /export/server/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar ``` 这才是冲突来源! --- ### ✅ 真正解决方案:隔离日志依赖(推荐做法) 由于不能删除 Hadoop 中的 jar(会影响 Hadoop 自身),最佳方式是 **让 Hive 优先使用自己的日志实现并忽略 Hadoop 的冲突绑定**。 但这在默认配置下难以完全避免。实际生产中可接受该警告,只要功能正常。 --- ### ✅ 缓解建议(可选) #### 方案一:重命名 Hadoop 中的冲突 jar(谨慎操作) ```bash # 进入 Hadoop lib 目录 cd /export/server/hadoop/share/hadoop/common/lib/ # 备份并重命名冲突 jar(防止 Hadoop 其他命令报错,视情况而定) mv slf4j-log4j12-1.7.25.jar slf4j-log4j12-1.7.25.jar.bak ``` > ⚠️ 风险提示:这可能影响 `hadoop` 命令自身的日志输出,请测试 `hadoop version` 是否正常。 #### 方案二:接受警告(最安全) SLF4J 官方说明:[http://www.slf4j.org/codes.html#multiple_bindings](http://www.slf4j.org/codes.html#multiple_bindings) > “If multiple bindings are found on the class path, SLF4J will pick one logging framework/implementation and issue a warning.” > —— SLF4J 会自动选择一个实现,并发出警告,**不会中断程序运行**。 ✅ 结论:**可以忽略此警告,不影响 Hive Metastore 正常工作**。 --- ### ✅ 验证服务是否正常运行 即使有警告,只要看到: ``` Starting Hive Metastore Server ``` 并且: ```bash netstat -an | grep 9083 ``` 显示端口已监听,则服务就是正常的。 --- ### 知识点详解 - **Hive 元数据管理机制**:Metastore 提供 Thrift 接口供客户端查询表结构,独立进程运行于 9083 端口。 - **JVM 进程管理原理**:Java 应用启动后可通过 `jps` 查看 PID,用 `kill` 终止进程实现服务关闭。 - **nohup 与 & 作用**:`nohup` 忽略挂断信号,`&` 放入后台,组合实现脱离终端的长期运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值