pCloud Partner Program

好用工具svchost viewer

系統技術/Windows 2010/03/23 17:56
views: 84804 times
偶然在 windows server 上會發現記憶體愈來愈少. 但是又是無法重新開機的狀況, 利用 task manager 會發現有個吃記憶體的怪獸, svchost.exe

這個 svchost.exe 望文生義, 就是個 host 服務的程式, 所以本身並無特別的執行項目, 而必須看他 host 什麼樣的服務, 這裡有個工具, svchost viewer: http://www.codeplex.com/svchostviewer , 就是專門用來看 svchost 的每個服務使用了多少記憶體及服務名稱, 方便在 svchost.exe 吃大量記憶體時, 查找原因所在.

這個 svchost viewer 是專查 svchost.exe 這個 process 的工具, 其實還有另一個功能更強大的工具, process explorer: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx , 這個工具原本是在 sysinternal 這家公司, 早些年因為它的 utility 很豐富, 而且功能又都很強大(看它的名字叫 sysinternal 就能明白), 所以被微軟收購下來. 這個 process explorer 功能更多, 但若是拿來看 svchost 的 process 也能查找對應 svchost viewer 的功能, 但多更多其他的功能就是了.

這篇文章介紹了 svchost viewer 的介面及用法, 可以參考看看: 對一堆正在執行的 svchost.exe 好奇嗎?Svchost Viewer 可以給你答案 http://blog.joaoko.net/archives/1070

利用這樣的工具, 之前 svchost.exe 吃掉了 1g多的記憶體, 原來是 remote register 這個 service 用掉 1.06g 的記憶體, 真是太嚇人了, 停掉該服務後, 果然記憶體就還回來囉, 再次啟動這個服務, 又讓系統有充裕的記憶體可用了.
top

快速kill process的方式(Windows)

系統技術/Windows 2008/10/18 11:10
views: 148894 times
手邊剛好在處理一個大量 process 未結束於系統上的一個問題. 該 server 不知什麼原因, 在起動 cgi 程式時, 發生了這個現象, 偶發的不會自行結束, 於是在系統內就留下了許多該 process 的名稱. 利用 task manager 會看到大量的 process, 雖未佔用 cpu, 不過會吃掉一部分的記憶.

在不方便重開 server 的狀況下, 如何快速地將相同名稱的 process 一起刪除呢? 於是上網想查看看有沒有什麼方便的小工具可以做這件事. 結果很順利地找到系統內建的一個指令: taskkill

這個指令是給定要刪除的 pid 或 image name (就是執行檔名稱), 來進行 process kill 的動作. 簡單研究一下, 進行了測試, 效果相當不錯, 800多個 process 一下就刪完了, 使用的指令如下:

taskkill /IM mytest.exe /F



如此一來, 所有 mytest.exe 的 process 一口氣就被 kill 完成了.

另外有許多方便的參數可供使用, 詳情可以利用 taskkill /? 來取得說明, 列表如下:


TASKKILL [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

Description:
    This tool is used to terminate tasks by process id (PID) or image name.

Parameter List:
    /S    system           Specifies the remote system to connect to.

    /U    [domain\]user    Specifies the user context under which the
                           command should execute.

    /P    [password]       Specifies the password for the given user
                           context. Prompts for input if omitted.

    /FI   filter           Applies a filter to select a set of tasks.
                           Allows "*" to be used. ex. imagename eq acme*

    /PID  processid        Specifies the PID of the process to be terminated.
                           Use TaskList to get the PID.

    /IM   imagename        Specifies the image name of the process
                           to be terminated. Wildcard '*' can be used
                           to specify all tasks or image names.

    /T                     Terminates the specified process and any
                           child processes which were started by it.

    /F                     Specifies to forcefully terminate the process(es).

    /?                     Displays this help message.

Filters:
    Filter Name   Valid Operators           Valid Value(s)
    -----------   ---------------           -------------------------
    STATUS        eq, ne                    RUNNING |
                                            NOT RESPONDING | UNKNOWN
    IMAGENAME     eq, ne                    Image name
    PID           eq, ne, gt, lt, ge, le    PID value
    SESSION       eq, ne, gt, lt, ge, le    Session number.
    CPUTIME       eq, ne, gt, lt, ge, le    CPU time in the format
                                            of hh:mm:ss.
                                            hh - hours,
                                            mm - minutes, ss - seconds
    MEMUSAGE      eq, ne, gt, lt, ge, le    Memory usage in KB
    USERNAME      eq, ne                    User name in [domain\]user
                                            format
    MODULES       eq, ne                    DLL name
    SERVICES      eq, ne                    Service name
    WINDOWTITLE   eq, ne                    Window title

    NOTE
    ----
    1) Wildcard '*' for /IM switch is accepted only when a filter is applied.
    2) Termination of remote processes will always be done forcefully (/F).
    3) "WINDOWTITLE" and "STATUS" filters are not considered when a remote
       machine is specified.

Examples:
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"


給大家參考!

參考資料: XP: kill a Windows process from the command line with taskkill

top

好用netstat指令

系統技術/Windows 2008/08/06 13:42
views: 190028 times
在 windows 下使用 netstat 指令來查詢已開啟的 listen port (-a), 以及已建立的連線 (active connection) 是十分方便的工具. 不過若是要知道該 connection 或 listen port 是由哪個 process 建立的, 在 netstat 指令下是無法達成的, 必須藉由另一個 sysinternals (被 ms 併入了)的 tcpview 工具.

不過, 現在可以不用這麼麻煩了, netstat 工具已經增加了這個功能, 指令是 (-b), 例如:

netstat -nb

可 以找出目前建立 connection 的不解析名稱(即使用ip及port number, -n)的方式, 列出對應的執行檔名稱及 process id (PID), 如此一來, 對於要快速追蹤 active connection 及 listen port 的 process (或執行檔名) 可以更快速的利用指令來取得.

常用的方式如下:

netstat -na

netstat -nab

為什麼使用 -n, 因為可以不用反查 hostname, 直接顯示 ip, 速度較快啦.
另外使用 -b 的功能應該是要在 windows 2003 sp2 及以上, windows xp sp3, windows vista 以上才有.

more..


top




Nextbit Robin 5.2吋六核心智慧型手機 Microsoft Office 365 中文家用版PKC (無光碟)
ASUS華碩 AC1900 雙頻無線路由器 RT-AC68U 美國 VORNADO 533 渦流空氣循環機 (黑色)
御茶園 每朝健康綠茶(650mlx24入) 每朝健康 雙纖綠茶(650mlx24入)


 Waiting...