有没有朋友跟小编一样,在 Windows 上用惯了 netstat,换 Linux 系统后一输命令就报错?要么提示 “命令找不到”,要么参数不对,明明想查个端口占用,结果越弄越乱。其实啊,netstat 在这俩系统里用法大同小异,但就是那点 “小异”,能让新手卡半天。今天就手把手教你,不管是 Windows 还是 Linux,netstat 咋用才顺,参数啥意思,出错了咋整,再附上个实战对比,保证看完你也能玩转!
先搞懂:netstat 参数就这几个,记不住也能查
别被 “参数” 俩字吓着,常用的就那么几个,小编整理了个对比表,一看就明白:
参数 | Windows 下作用 | Linux 下作用 | 共同点 |
---|---|---|---|
-a | 显示所有连接和监听端口 | 显示所有连接和监听端口 | 都能看全连接情况 |
-n | 用数字显示 IP 和端口(不用域名) | 用数字显示 IP 和端口(不用域名) | 避免解析域名,速度快 |
-o | 显示占用端口的进程 ID(特有) | 无此参数(用 – p 替代) | – |
-p | 无此参数(Windows 用 – o) | 显示占用端口的进程名和 ID(特有) | – |
-t | 无此参数 | 只显示 TCP 连接(特有) | – |
-u | 无此参数 | 只显示 UDP 连接(特有) | – |
你看,核心参数 “-a”“-n” 俩系统都能用,区别主要在看进程和协议类型上。比如 Windows 想知道谁占了端口,得用 “-o”;Linux 就得用 “-p”。记不住没关系,收藏这表,用到时翻一眼就行。
小编刚开始分不清,在 Linux 里输 “netstat -ao”,结果报错 “无效参数”,后来才知道 Linux 没有 “-o”,换 “-p” 立马就出来了,你说气人不气人?
新手常踩的坑:这几种错误,俩系统各有各的 “作妖” 法
用 netstat 最烦的就是报错,明明照着教程输的,就是不行。小编总结了几个高频错误,看看你是不是也遇到过。
(1)“命令不是内部或外部命令”——Windows 专属坑
刚学的朋友常犯这错,输完 netstat 回车,弹出这句。其实多半是拼写错了,比如把 “netstat” 写成 “netstst”,仔细瞅瞅键盘,改过来就行。
还有种可能,系统路径没配置对,但这种情况极少。解决办法特简单:打开 “此电脑”,搜 “netstat.exe”,找到后记住它的位置(一般在 C:\Windows\System32),然后在命令提示符里 cd 到这个目录再输命令,保准管用。小编帮同事解决过一次,就是这么弄好的。
(2)“permission denied”——Linux 专属坑
Linux 下输 netstat -p,常弹出这玩意儿,意思是 “没权限”。因为看进程信息得有管理员权限,就像进小区大门得刷门禁卡一样。
解决办法特简单:命令前加个 “sudo”,比如 “sudo netstat -tunlp”,输完密码回车,立马就出来了。小编第一次用 Linux 时卡这好久,后来知道加 sudo,瞬间通畅了。
(3)参数混用报错 —— 俩系统都可能踩
比如在 Windows 里输 “netstat -t”,会提示 “无效选项”,因为 Windows 里没有 “-t” 这个参数(这是 Linux 里看 TCP 连接的)。反过来,在 Linux 里输 “netstat -o”,也会报错,因为 Linux 不用 “-o” 看进程 ID。
记住喽:Windows 里常用 “-a -n -o”;Linux 里常用 “-a -n -t -u -p”,别混着用,就不容易错。
实战案例:这 3 个场景,俩系统操作对比
光说参数太空泛,咱们拿三个常用场景举例,一步一步教你操作,保准你看完就会。
(1)查看 8080 端口被谁占用?
- Windows 步骤:
- 打开命令提示符(Win+R 输 “cmd”);
- 输命令 “netstat -ano | findstr “8080””,回车;
- 看结果里 “LISTENING” 后面的数字(比如 1234),这是进程 ID;
- 打开任务管理器,点 “详细信息”,找 PID=1234 的进程,右键结束就行。
- Linux 步骤:
- 打开终端(Ctrl+Alt+T);
- 输命令 “sudo netstat -tunlp | grep 8080”,回车输密码;
- 看结果里 “LISTEN” 后面的进程名和 ID(比如 “java 1234”);
- 输 “sudo kill -9 1234”,干掉这个进程。
小编测试过,俩系统都能快速查到占用情况,Linux 步骤稍多一步输密码,但看进程名更直观(Windows 得去任务管理器找)。
(2)统计 TCP 连接数 —— 服务器常用
- Windows 步骤:
- 命令提示符里输 “netstat -an | find /c “ESTABLISHED””;
- 结果直接显示数字,比如 “15”,就是有 15 个已建立的 TCP 连接。
- Linux 步骤:
- 终端里输 “netstat -ant | grep ESTABLISHED | wc -l”;
- 结果也是数字,比如 “15”,意思一样。
这个功能在服务器上特有用,比如网站卡了,查连接数是不是太多,俩系统都能快速搞定,Linux 的命令稍长点,但复制粘贴就行。
(3)看所有监听端口 —— 检查服务是否启动
- Windows 步骤:
输 “netstat -ano | findstr “LISTENING””,会列出所有在监听的端口,比如 3306(MySQL)、80(HTTP),能看出服务是不是启动了。 - Linux 步骤:
输 “sudo netstat -tunlp | grep LISTEN”,不仅能看到端口,还能直接看到对应的服务名(比如 nginx、mysql),不用自己猜,这点比 Windows 方便。
小编运维的服务器,每天都用这命令检查服务状态,Linux 的结果更直观,新手不用记端口对应的服务,省不少事。
小编的实在话
netstat 在 Windows 和 Linux 里用法真不算复杂,记住 “Windows 用 – o 看进程,Linux 用 – p 加 sudo”,基本能应付 80% 的场景。新手不用死记所有参数,用到啥查啥,多试两次就熟了。
要是你经常在俩系统间切换,建议把常用命令写在记事本上,比如查看端口的命令,复制粘贴比自己输快多了。其实啊,不管啥系统,多动手练才是王道,报错了别慌,照着上面的方法排错,慢慢就成高手了。希望这篇能帮你少踩坑,用 netstat 顺顺当当!