/*
* http://sosal.kr/
* made by so_Sal
*/
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
위의 과정이 귀찮고 grep으로 원하는 프로세스 목록만 추출할 수 있다면 위의 명령어로 쉽게 해결가능합니다 ^^
'Linux > Linux_technic' 카테고리의 다른 글
리눅스 파일이름, 확장자 한꺼번에 바꾸기 (0) | 2015.07.07 |
---|---|
nohup - 터미널을 종료해도 꺼지지 않는 프로세스 실행 (2) | 2015.06.28 |
PHP 5.2 구버전 설치 + mysql 연동 / CentOS (0) | 2014.11.05 |
Ubuntu에서 SSHD 데몬 설치하여 접속하기 (0) | 2014.08.14 |
Checksum과 md5sum / 파일 검사합 (0) | 2014.08.12 |