KiMoGiGi 技术文集

不在乎选择什么,而在乎坚持多久……

IT博客 首页 联系 聚合 管理
  185 Posts :: 14 Stories :: 48 Comments :: 0 Trackbacks
由于用.net开发,少不了跟window服务器做交互。window系统的交互的确方便,但如果要做一些快速操作还是cmd比较快,而且不可能每个人都远程连接到服务器去操作、查看。

虽然window有powershell弥补cmd的不足,但Powershell的执行效率始终是个问题,而且cmd已经够我们日常的操作。

下面列出我常用的cmd操作指令。

1、help

help指令会列出cmd一系列原生的指令,以及其简单的描述。
如果要对某个cmd指令做详细的帮助,可以输入
xx /?    (xx为指令名)

2、call

执行一个bat程序,如果有一些常用的一系列cmd指令,我们可以写成一个bat文件,然后用call来执行。

3、findstr

在文件中搜索字符串,类似于shell的grep,但弱很多。
-- 查询准确字符串
findstr //l xxx doc.log 

-- 查询模糊字符串
findstr //r xxx doc.log 


其中“/n”是表示显示匹配行的行号,而查询模糊字符串的通配符并不是正则,是微软规定的通配符,如下所示:

一般表达式的快速参考:

  .        通配符: 任何字符
  *        重复: 以前字符或类别出现零或零以上次数
  ^        行位置: 行的开始
  $        行位置: 行的终点
  [class]  字符类别: 任何在字符集中的字符
  [^class] 补字符类别: 任何不在字符集中的字符
  [x-y]    范围: 在指定范围内的任何字符
  \x       Escape: 元字符 x 的文字用法
  \<xyz    字位置: 字的开始
  xyz\>    字位置: 字的结束

还需要注意的是,findstr是以操作系统的默认编码打开文本文件的,因此如果文本是unicode编码的话,便搜索不了,会乱码显示。

4、type

显示文本的内容,跟findstr一样,有编码的缺点。


5、tasklist

查询目前执行的进程状况,直接输入tasklist就直接以table形式列出所有进程的状况。

tasklist提供参数可以过滤信息,比如我们只想看w3wp进程的信息。
tasklist /fi "Imagename eq w3wp.exe"

我们想看使用内存大于500000k的进程
tasklist /fi "memusage gt 50000" 

相叠加条件的话,可以多个/fi即可。

tasklist 还提供一个参数 /M ,让我们可以查看进程加载dll的情况。
tasklist /fi "Imagename eq w3wp.exe" /m
这样就可以清楚看到各个w3wp.exe所加载dll的情况,我们就可以分出哪个w3wp进程在管理哪个web程序。(本人通常看到服务器运行n个w3wp.exe,但却无法识别哪个w3wp对应是哪个web程序)
如果我们asp.net的dll有命名规则,比如dll都以公司名为开头,如CompanyName.Web.dll
那么可以在/M加上通配符过滤结果。

tasklist /fi "Imagename eq w3wp.exe" /"CompanyName*"

这样就更清楚列出,这个w3wp具体加载我们dll的情况。



也许这些指令还不够用,微软提供了命令行的扩展包可供下载,Windows Server 2003 Resource Kit Tools 。直接安装即可使用,但安装后help并不会把这些指令列出来。

1、qgrep

跟findstr类似,用于查询文本中的字符串。

2、tail

跟shell的tail类似,但tail -f功能有时会失灵。。。



关于iis管理操作方面,也有指令可以做简单的控制。

1、iisreset

管理iis的服务,可以查看、停止、重启、开启iis服务。

iisreset /stop   停止iis
iisreset /start  启动iis
iisreset         重启iis
iisreset /status 查看状态

2、iisapp

iisapp用于管理应用程序池,我们更新配置文件需要清除缓存的时候,需要回收进程池。

我们可以用iisapp列出当前启用的进程池。
然后用
iisapp /"appname" /r
回收进程池



一般cmd我们只可以操作本机,操作远程机器的我们需要借助微软的PsTools

pstools本身也有很多有用的指令,但远程的话,我们就只用psexec。

操作很简单,只需要客户端有pstools即可,服务器不用做额外服务配置,输入如下

psexec \\[ip或机器名] -u [用户名] -p [密码] cmd.exe 


这样就可以操作远程机器的cmd了。


posted on 2010-06-29 22:42 KiMoGiGi 阅读(1215) 评论(0)  编辑 收藏 引用 所属分类: 经验之谈
只有注册用户登录后才能发表评论。