Last active
February 6, 2023 01:58
-
-
Save dstyle0210/73157ad9ffa171d20e3d4af27bbbf4f2 to your computer and use it in GitHub Desktop.
포트번호 가져다가 pid 구하기
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 포트번호 기준해서, pid값 구하는거 (netstat 이용) | |
| import { exec } from "child_process"; // 작으니까 exec | |
| const splitStat = (stat) => stat.trim().split(/\s+/); // 띄어쓰기를 기준으로 스플릿 | |
| const findPidFromPort = (port_) => { | |
| return new Promise((resolve,reject) => { | |
| exec(`netstat -ano`,(err,stdout,stderr) => { | |
| if(err) reject(err); // 에러가 존재 한다면 리턴해준다. | |
| if(stderr) reject(stderr); // 표준에러가 존재 한다면 리턴해준다. | |
| const _portReg = new RegExp(`:${port_}$`); // 포트번호가 딱 떨어져야함 | |
| const _row = stdout.split(/\n/).find((row_) => { | |
| const _target = splitStat( row_ )[1]; // 내부아이피만 체크 | |
| return (_portReg).test(_target); // 입력된 내부포트를 가진 row 만 리턴. | |
| }); | |
| // 포트가 존재하면 | |
| const _result = (_row) ? Number( splitStat(_row).pop() ) : 0; | |
| resolve(_result); | |
| }); | |
| }); | |
| }; | |
| export default findPidFromPort; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 포트번호 기준해서, pid값 구하는거 (netstat 이용) | |
| import { exec } from "child_process"; // 작으니까 exec | |
| const splitStat = (stat:string):string[] => stat.trim().split(/\s+/); // 띄어쓰기를 기준으로 스플릿 | |
| const findPidFromPort = (port_:number):Promise<number> => { | |
| return new Promise((resolve,reject) => { | |
| exec(`netstat -ano`,(err,stdout,stderr) => { | |
| if(err) reject(err); // 에러가 존재 한다면 리턴해준다. | |
| if(stderr) reject(stderr); // 표준에러가 존재 한다면 리턴해준다. | |
| const _portReg = new RegExp(`:${port_}$`); // 포트번호가 딱 떨어져야함 | |
| const _row = stdout.split(/\n/).find((row_) => { | |
| const _target = splitStat( row_ )[1]; // 내부아이피만 체크 | |
| return (_portReg).test(_target); // 입력된 내부포트를 가진 row 만 리턴. | |
| }); | |
| // 포트가 존재하면 | |
| const _result = (_row) ? Number( splitStat(_row).pop() ) : 0; | |
| resolve(_result); | |
| }); | |
| }); | |
| }; | |
| export default findPidFromPort; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment