1. 원하는 프로세스 목록만 가져오기 - ps, grep
2. 프로세스 목록에서 pid만 가져오기 - AWK (GAWK)
3. kill 명령어로 한번에 프로세스 종료하기
4. Shell script를 이용하여 한번에 종료하기
작업할게 많아서 R이라는 프로그램을 거의 40개 가량 돌려야 할 때가 있었습니다.
근데 하나 실수한게 있어서 이 40개나 되는 프로세스를 다 죽여야하게 됐는데,
nohup 백그라운드로 실행시키는 바람에 kill이라는 명령어로 하나 하나 다 따로 죽여야 하는 상황이 됐네요.
Fig.1 ps -elf | grep sosal | grep exec
(스압 --;)
1. 원하는 프로세스 목록만 가져오기 - ps, grep
40개를 하나하나 프로세스 아이디(pid)를 다 치기에는 너무 귀찮으니 pid 목록만 뽑아와서 한번에 다 kill 할 수 있도록 해봤습니다.
일단 ps -elf 명령어를 grep으로 sosal과 exec가 모두 포함된, 제가 kill 하고자 하는 프로세스 목록만 뽑았습니다.
그 명령어가 ps -elf | grep sosal | grep exec 이지만, 혹시 중요한 프로세스가 켜져있는 경우 pid가 뽑히면 안되니,
추가적으로 grep으로 중요한 프로세스를 제거해주시면 됩니다.
2. 프로세스 목록에서 pid만 가져오기 - AWK (GAWK)
우리가 원하는 결과는 fig1과 같은 결과에서 4번째 column(열)이기 때문에, 이것을 가져오는 스크립트 언어가 필요합니다.
- n번째 column만 가져오려면 다음과 같이 입력하면 됩니다.
ps ~ | awk '{print $n}'
Fig.2 ps 명령어 결과의 1~5번째 column 가져오기
ps -elf | grep sosal | grep exec | awk '{print $1,$2,$3,$4,$5}'
3. kill 명령어로 한번에 프로세스 종료하기
ps -elf | grep sosal | grep exec | awk '{print $3,$4}' 명령어로 제 id와 pid 목록만 가져와봤습니다.
Fig 3. ps & awk 명령어로 id와 pid만 가져오기
그리고 메모장이나 다른 텍스트 편집기에서 '바꾸기' 기능을 이용하여 sosal을 kill로 바꿔주시면 됩니다.
모든 kill 명령어를 이제 리눅스 콘솔에 붙여넣으면 끝 ^^
4. Shell script를 이용하여 한번에 종료하기
ps -elf | grep "프로세스 목록 추출" | awk '{print $4}' | while read line; do kill $line; done
'IT > 리눅스마스터1급' 카테고리의 다른 글
$PATH에서 경로 지우기 / 중복 경로 지우기 (0) | 2023.02.06 |
---|---|
리눅스 환경변수(path) 설정 (0) | 2023.02.06 |
일반 계정에 root 권한 부여 (0) | 2023.01.26 |
[Linux] 일반 user에게 root 권한 부여하기 (0) | 2023.01.26 |
tar 압축 중 메세지 "tar: Removing leading `/' from member names" 뜻 (0) | 2023.01.25 |