티스토리 뷰

윈도우 프로세스 명령어 정리

비교적 전체 명령어 보다는 주로 사용하게 되는 명령어 및 옵션 위주로 기재하였다.

사실 이중 가장 유용한것은 부모 프로세스까지 볼수 있는 wmic 이다. 천천히 기술한다.

1. 프로세스 리스트 확인 : tasklist

   1) 설명 : 프로세스 리스트를 보여준다

   2) 입력 구조 : TASKLIST [/S 시스템 [/U 사용자 이름 [/P [암호]]]] 
                                 [/M [모듈] | /SVC | /V] [/FI 필터] [/FO 형식] [/NH]

   3) 기본 구성 : 프로세스 명, pid, 세션명 등을 보여준다

  

 

  4) 주요 옵션 : /V 상세정보 보여줌

      - 사실 이것 말고 주요 옵션은 없어보인다, 이것과 findstr을 적절히 사용하는 것이 중요

          예시 :  java 이름이 들어가는 프로세스 의 상세 내용을 알고 싶다

                  -> tasklist /v | findstr java

 

2. 프로세스 kill : taskkill

   1) 설명 : 개발을 진행하거나 하다보면 여기저기 튀어나오는 좀비들때문에 여간 귀찮은것이 아니다.

                     그럴때 프로세스를 죽일수 있는 명령어가 taskkill 이다

   2) 기본 구성  : TASKKILL [/S 시스템 [/U 사용자 이름 [/P [암호]]]]
                                  { [/FI 필터] [/PID 프로세스 id | /IM 이미지 이름] } [/T] [/F]

   3) 주요 옵션

      a. /PID 프로세스 ID : 특정 프로세스ID의 프로세스 종료하기

         예시 : taskkill /PID 21500  -> 21500 PID를 가지는 프로세스 종료해라

      b. /IM 프로세스명 : 특정 이름을 가지는 프로세스 종료(와일드카드(*) 사용가능)

         예시 : taskkill /IM java* -> java로 시작하는 이름을 가진 프로세스 종료해라

      c. /T : 지정된 프로세스와 그 자식 프로세스 까지 종료

         예시 : taskkill /T /PID 21303 -> PID가 21303인 프로세스와 그 자식 프로세스 까지 종료

      d. /F : ㅋㅋㅋㅋ 제일 절대적인 옵션 그냥 죽여라!!

              보통, 서비스가 돌고있는경우 taskkill을 날려도 프로세스가 죽지않는경우가 있는데,

              그경우 강제로 죽일수 있는 옵션

              (강제이다 보니 왠만하면 영향도를 알고써야하지만, 그냥 두루두루 잘들 쓰는거도 함정...0

          예시 : taskkill /F /PID 21303 -> PID가 21303인 프로세스를 강제 종료 하라

      종합예시 : taskkill /T /F /IM note*

                    -> note로 시작하는 이름을 가진 프로세스와 그 자식프로세스를 모두 강제로 종료하라

- 지금 까지 계속 프로세스에서 부모 자식 개념이 존재하는데

   그럼 부모프로세스는 어떻게 찾아야할까?  이 때 필요한 명령어가 wmic 이다

 

3. WMIC 명령어를 통한 부모 프로세스 찾기

    - wmic 에 대한 자세한 설명을 추후해하고~

     1. wmic를 통하여 프로세스 찾기 : wmic process

        wmic process 명령어를 치면 아래와 같이.. 더럽게 많은 내용이 나온다.

        너무 길어서 cmd도 라인이 엉망으로 나온다..

Caption                                                            CommandLine                                                                CreationClassName  CreationDate               CSCreationClassName   CSName           Description                                                         ExecutablePath                                                                                                    ExecutionState  Handle  HandleCount  InstallDate  KernelModeTime  MaximumWorkingSetSize  MinimumWorkingSetSize  Name                                                                OSCreationClassName    OSName                                                            OtherOperationCount  OtherTransferCount  .... .... 이하 생략 개많아                                                                                                                                                                                                                                       

   2. wmic를 통해 보고싶은것만 찾아보자

      -> wmic process where 항목="항목값" get 파라미터1, 파라미터2, 파라미터3

      -> 프로세스 항목의 값이 "항목값인" 프로세스의 파라미터1, 파라미터2, 파라미터3 정보를 표시해준다.

      예시) wmic process where name="chrome.exe" get processid, parentprocessid, commandline

              -> 프로세스명이 chrome.exe인 프로세스의 pid, ppid, commandline을 볼수 있다.

      -> 즉 이를 통해 parentprocessid를 확인할수 있다

 

4. 추가 : wmic process에서 검색할수 있는 컬럼명

아래 항목이다.

  Caption
CommandLine
CreationClassName
CreationDate
CSCreationClassName
CSName
Description
ExecutablePath
ExecutionState
Handle
HandleCount
InstallDate
KernelModeTime
MaximumWorkingSetSize
MinimumWorkingSetSize
Name
OSCreationClassName
OSName
OtherOperationCount
OtherTransferCount
PageFaults
PageFileUsage
ParentProcessId
PeakPageFileUsage
PeakVirtualSize
PeakWorkingSetSize
Priority
PrivatePageCount
ProcessId
QuotaNonPagedPoolUsage
QuotaPagedPoolUsage
QuotaPeakNonPagedPoolUsage
QuotaPeakPagedPoolUsage
ReadOperationCount
ReadTransferCount
SessionId
Status
TerminationDate
ThreadCount
UserModeTime
VirtualSize
WindowsVersion
WorkingSetSize
WriteOperationCount
WriteTransferCount