달력

52025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'Process Kill'에 해당되는 글 1건

  1. 2011.11.24 grep을 이용한 프로세스 kill - windows7, gnuwin32, pstools
※ Windows 에서 grep 을 이용해서 필터링된 프로세스 모두 닫기

1. 습관적으로 notepad에 기록하는 임시메모로 10개 이상의 notepad.exe 프로세스
   - 내용이 있는 프로세스는 작업표시줄의 [모두닫기] 를 이용해도 저장여부를 확인해야되는 불편함


2. 별도세션으로 띄워야 되기에 ctrl+click 으로 띄워서 10개가 넘어가는 Internet Explorer
   - 탭은 하위프로세스로 떠서 pstools의 Process Explorer 의
      [Kill Process Tree] 를 사용하면 되는데 별도 프로세스는 
      각 상위트리의 프로세스별로 종료해야됨
   - 듀얼모니터 사용으로 taskbar 확장프로그램을 이용중이라 작업표시줄
      의 [모두닫기] 를 사용도 불편(확장 태스크바 에서는 [모두닫기] 안됨)

3. Pstool의 pskill 을 사용하면 1, 2가 어느정도 해결되나 약간의 불편한
   - 1은 pskill notepad, 2의 경우는 pskill iexplore 로 종료가능
   - IE의 경우 프로그램명은 Internet Explorer 인데 프로세스명은
     iexplore.exe <= iexplorer 로 해야지 왜 젤 뒤에 r 을 빼놓는지.. -_-
   - 여튼 다 치기도 귀찮고 이 위의 이유로 은근히 헷갈림




결론 grep을 이용해서 pskill iex 정도로 종료하면 편할듯 함


사용한 툴
GnuWin32 : Win32 환경에서 GNU 의 라이브러리들을 사용할수 있게 해줌
   - 사용명령어 : grep, awk, uniq,xargs
   - http://www.gnuwin32.sourceforge.net/

PsTools : Sysinternals(현재는 M$에 인수) 에서 제작한 시스템 관리툴킷
   - 사용프로그램 : pslist, pskill 
   - http://technet.microsoft.com/ko-kr/sysinternals


우선 간단한 배치프로그램 제작해서 사용하고 추가적인 문제점은 보완 예정
OS      : Windows 7 32bit
Bat 명  : gkill.bat

@echo off
REM
REM [Group Process Kill]
REM 파일명      : gpkill.bat v1.0
REM 작성일      : 2011.11.24
REM 작성자      : INUX
REM Description : Process Name의 패턴 문자열을 받아서 해당 프로세스를 모두 종료한다.
REM             : notepad++ 과, Evernote 는 개인적 필요로 예외처리
REM 의존패키지  : GnuWin32 - grep, awk, uniq, xargs
REM             : PsTools  - pslist, pskill

echo #
echo # usage : gkill [패턴문자열]
echo #
if "%1" == "" (
    echo.
    echo gpkill: 종료할 Process의 패턴문자열을 입력하세요.
) else (
    pslist | grep %1 |awk "{print $1}" |grep -v notepad++ |grep -v Evernote |uniq |xargs -n1 pskill
)


- 순서
   1. 프로세스 목록에 대해 grep 으로 필터링
   2. awk로 필터링된 프로세스에 대해 pid 추출
   3. xargs로 pskill 에 각 pid 인자 전달


사용중 ISUUE 사항
1. JSP 에디터로 notepad++ 을 사용중인데 gkill note 정도로 사용하면 두 프로세스가 동시 종료됨
   - 추가 : evernote.exe도 동일케이스 note 가 들어가는 프로세스가 생각보다 많다. 조심해서 사용해야될듯
   - 우선 옵션에 |grep -v notepad++ |grep -v Evernote 를 추가해서 사용 : 조금 더 생각 해봐야될듯

2. 프로세스 종료 메시지가 많이 나옴
   - ie 프로세스가 10개일 경우 pskill iexplore 사용시 출력메시지
PsKill v1.13 - Terminates processes on local or remote systems
Copyright (C) 1999-2009  Mark Russinovich
Sysinternals - www.sysinternals.com

10 processes named iexplore killed.

   - gkill ie 사용시는 각 프로세스별 pid로 종료하는 방식이라 위 메시지가 각각 1회씩 총 10번 출력됨
      : sort 등을 이용해서 pid가 아닌 process name 으로 종료하는 방식으로 수정 해봐야될 필요성이 있음 - (반영)

3. grep 으로 필터링된 프로세스가 없을경우

 C:\>gpkill test
#
# usage : gkill [패턴문자열]
#

pslist v1.29 - Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals


PsKill v1.13 - Terminates processes on local or remote systems
Copyright (C) 1999-2009  Mark Russinovich
Sysinternals - www.sysinternals.com

Usage: pskill [-t] [\\computer [-u username [-p password]]] <process ID | name>
     -t    Kill the process and its descendants.
     -u    Specifies optional user name for login to
           remote computer.
     -p    Specifies optional password for user name. If you omit this
           you will be prompted to enter a hidden password.

xargs: pskill


   - pskill 에 전달된 인자가 없어서 pskill 의 Usage 메시지가 출력됨 : 보기가 좀 안좋음
   - wc -l 로 grep 으로 필터링된 프로세스의 수를 확인해서 메시지를 출력하고자 했으나 화면 출력을 배치파일의 변수로 할당하는데서 문제 발생으로 미결

4. 패턴문자열의 대소문자 구분 제거
   - 윈도우에서 사용하므로 대소문자 구분 필요성 없음
      ex) TOTALCMD 종료시  gpkill TOTAL  처럼 대소문자 변경시 불편함

 @echo off
REM
REM [Group Process Kill]
REM 파일명      : gpkill.bat v1.1
REM 작성일      : 2011.11.24
REM 작성자      : INUX
REM Description : Process Name의 패턴 문자열을 받아서 해당 프로세스를 모두 종료한다.
REM             : notepad++ 과, Evernote 는 개인적 필요로 예외처리
REM 의존패키지  : GnuWin32 - grep, awk, uniq, xargs
REM             : PsTools  - pslist, pskill
REM********************************************************************************
REM 작성일         버전     변경내역
REM********************************************************************************
REM 2011.11.24     1.0      최초작성
REM 2011.11.30     1.1      패턴 문자열 대소문자 구분안함으로 변경

echo #
echo # usage : gpkill [패턴문자열]
echo #

if "%1" == "" (
    echo gpkill: 종료할 Process의 패턴문자열을 입력하세요.
) else (
    pslist | grep -i %1 |awk "{print $1}" |grep -v notepad++ |grep -v Evernote |uniq |xargs -n1 pskill
)


Posted by InuxKr
|