월별 글 목록: 2021년 3월월

nodejs 윈도우 process kill 하기

먼저 윈도우 프로세스를 확인해보자.

윈도우키 + R 을 눌러 실행창을 띄우고 “cmd”를 입력하여 도스창을 하나 띄운다.


프로세스를 확인할 수 있는 명령어 “tasklist” 입력하고 엔터~

이미지 이름, PID, 세션 이름,세션#, 메모리 사용 항목을 확인 할 수 있다.

더 많은 정보를 보기 위해 /v 옵션을 줘서 더 많은 내용을 확인한다.

지금 실행중인 프로세스에서 강제종료시킬 프로세스를 찾아야 하는데,
이미지이름(exe)과 창 제목으로 찾을 수 있다.

아래의 명령어로 계산기 프로그램을 강제종료 시켜보자.
tasklist /fo “CSV” /v | find /i “계산기”

/fo는 file out의 약자료 출력되는 형식을 정한다. csv형태 즉 콤마로 구분되어 있는 형식이다.
프로세스 목록에서 find명령어로 계산기를 검색한다.


tasklist의 더많은 검색 방법은 아래링크 참고
https://docs.microsoft.com/ko-kr/windows-server/administration/windows-commands/tasklist

노드 프로젝트 만들기

1.폴더 만들기

2. 프로젝트만들기

변경할 내용있으면 변경하지만.. 구찮기때문에 기본값으로 엔터만 계속..

3. 비주얼스튜디오 코드를 실행하여 index.js를 생성함

4. 소스를 추가

const prgname = "\"계산기\"";   // 찾을 프로그램명
const cmdkill = 'taskkill /pid ';    // process kill 명령어
const exec = require('child_process').exec; // 프로그램 찾을때 쓸 프로세스
const execkill = require('child_process').exec; // 프로그램 죽일때 쓸 프로세스
let   cmdlist = 'tasklist /fo "CSV" /v | find /i ' + prgname;   // 프로세스 목록에서 프로그램 찾는 명령어


function executeTaskKill() {

    //let _this = this;
    exec(cmdlist, (err, stdout, stderr)=> { // 프로세스 찾기
        if ( err) {
             console.log(`exec error: ${err}`);
        } else {

            // console.log('stderr', stderr);
             console.log('stdout:', cmdlist, '\n', stdout);

             if ( stdout ){  // 찾은게 있으면
                // 결과 : "Calculator.exe","17200","Console","9","2,708 K","Running","MYPC-I5\pcname","0:00:01","계산기"

                let arrList = stdout.split(',');    // 콤마로 분리
                if ( arrList.length > 2 ){  // 분리시킨 배열이 2개 이상이면
                    let pid = arrList[1];   // 배열의 두번째는 pid "17200"
                    pid = pid.replace(/"/g, '');    // 큰따옴표 제거
                    if ( /^[0-9]*$/.test(pid) ){    // pid는 숫자이기때문에 숫자 체크
                       return execkill(cmdkill + pid, (err, stdout, stderr)=>{     // 찾은 pid로 프로그램 kill 명령 실행
                        //    console.log('execkill err:'+ err);
                            console.log('execkill stdout:'+ cmdkill + pid);
                           return executeTaskKill();    // 다시 첨부터 실행
                       });

                    }
                }
            }
        }

        return executeTaskKill(); // 다시 첨부터 실행

    });
}

소스 넣고 저장

실행해보자.

node index.js

프로그램을 중간에 켜서 kill 됨

이제 exe파일 만들자.

exe파일을 만들기 위한 pkg 설치

node install -g pkg

간단하게 설치 끝남.

이제 exe만들기

pkg index.js –targets node10-win-x64

파일생성 완료

잘 됨.
그러나 dos창으로 떠서 활용을 못함…. 일단은 여기까지..