习惯了linux的系统管理员,对linux的命令行工具总是印象极深,几乎所有的管理都可以在命令行下完成。命令行工具是linux系统管理的主流。
而使用windows是,因为图形化的界面,大家习惯了图形化的管理,但很多时间会发现,在图形界面下缺少很多管理功能,一些在linux下很简单的管理功能,在windows下很难实现。很多人为了解决这个问题,上网寻找各种不同的工具软件,有不少可能根本就找不到,于是报怨windows管理弱。其实windows下也有许多很有用的命令行工具,能够实现很多如同linux下的管理和监控功能,只不过因为windows有一个傻瓜化的图形化管理界面,大家不再花力气去学习和了解这些命令行工具而已。其实对windows(尤其是windows server)系统管理员而言,学会使用windows命令行工具应该是必须的事情,不然还真是很难做好系统管理,就算你有很强的开发能力,能够自己编程开发各种图形化管理软件,即使这样,如果微软不开放某些接口,你想开发也没辙。
某天一个朋友想要掌握他的应用软件客户的连接数情况,软件本身没有提供相应监控,这个活在linux只要使用netstat很简单就可以解决,可在windows下,想了很久,也没找到办法。网上也没搜到相应软件。遇到我顺便问起,我记得windows下也有相应的netstat软件,加上-an选项后能够列出所有连接,然后只要过滤和统计一下就可以。
在linux下使用grep统计表,命令如下 netstat -an|grep xxx.xxx.xxx.xxx:端口 -c
可以直接输出统计结果。在windows命令行下没有grep命令,但有相似的find命令
语法为
参数 | 说明 |
---|---|
/v | 显示不包含指定的 的所有行。 |
/c | 对包含指定的 的行进行计数,并显示总计。 |
/n | 在前面的每个行与该文件的行号。 |
/i | 指定搜索不区分大小写。 |
[/ 关闭 [行]] | 不跳过具有脱机属性设置的文件。 |
"" | 必需。指定要搜索的字符 (括在引号) 的组。 |
[:][] | 指定要在其中搜索指定字符串的文件的名称和位置。 |
/? | 在命令提示符下显示帮助。 |
所以在windows下实现统计某个端口的连接数命令为:
netstat -an|find "xxx.xxx.xxx.xxx:端口" |find "ESTABLISHED" /c
注意1、find命令搜索的字符串要用双引号括起,这点与grep 不同。
2、ESTABLISHED 是已经建立起的连接,过滤了关闭的,等待的等状态。
由此可见,windows命令行功能也很强大,只要会用,一样可以在系统管理中起到大的作用。
与find命令相似的还有findstr,搜索的字符串不需要用双引号括起。但这个命令没有计数的功能。这里使用不合适。