Self-Improvement

12) Linux 프로세스1(ps, jobs, Background, Foreground, Signal, top) 본문

리눅스/명령어

12) Linux 프로세스1(ps, jobs, Background, Foreground, Signal, top)

JoGeun 2018. 10. 21. 13:34

*프로세스
 PID : 프로세스가 시작할 때 할방 받는 프로세스 식별번호
 PPID : 부모 프로세스 식별번호
 
 #ps (현재 터미널의 프로세스 정보 출력)
 #ps -f (현재 터미널의 프로세스의 PPID, CMD가 자세하게 나옴)
 #ps -e (모든 프로세스를 출력)
 #ps -l (가장 자세하게 출력)
 #ps -t pts/숫자 (특정 터미널의 관한 프로세스)
 #ps -U 유저이름 (해당 유저의 프로세스)
 -대체적으로 #ps -ef을 씀

 //proc
 #ls -ld /proc/* (모든 프로세스들 디렉터리, 파일들이 들어있음)
 ex) #gedit(=vi) & -> #ps -> PID 확인 -> #ls -ld /proc/PID -> 임시적으로 생성되어짐 (종료되면 해당 PID디렉터리도 사라짐)

*Background, Foreground 프로세스
 Background(bg) : #gedit &, PPID가 종료되면 PID도 종료된다.
 Foreground(fg) : #gedit, PPID가 종료되어도 PID는 종료되지 않는다
 
 //jobs(bg, fg관리)
 #jobs : jobsID와 함께 Foreground, Background목록들을 볼 수가있음
 
 //Background <-> Foreground
 #bg %jobID (Foreground을 Background로 바꿈)
 #fg %jobID (Background을 Foreground로 바꿈)
 #kill jobID (해당 작업을 없애는 것)

*프로세스 시그널
 #man 7 signal (메뉴얼 확인)
 #kill -시그널번호 PID (해당 PID를 시그널번호에 맞게 실행)
 #killall 이름 (이름을 가진 프로세스를 모두 종료)

 //시그널 번호 의미
 Signal 1 (SIGHUP) : 프로세스 재시작
 Signal 2 (SIGINT) : 키보드 인터럽트, <Ctrl + C>
 Signal 3 (SIGQUIT) : 키보드 종료
 Signal 9 (SIGKILL) : 강제 종료
 Signal 15 (SIGTERM) : 정상 종료
 Signal 18 (SIGCONT) : 프로세스가 중지된 경우 시작
 Signal 19 (SIGSTOP) : 프로세스 일시 중지, 차단, 처리
 Signal 20 (SIGTSTP) : 키보드 중지, <Ctrl + Z>

*프로세스 모니터링 [TUI]
 #top (프로세스 실시간 모니터링)
 #top -u 유저이름 (해당 사용자의 프로세스 모니터링)
 
 //top안에서 사용하는 명령어
 #top -> h (명령어들을 볼수가 있음)
 #top -> M(메모리중심), P(CPU중심)
 #top -> f (top에서 표시되는 내용을 바꿀수가 있음 해당 알파벳 눌르면 됨) 
 #top -> Z (색상 추가)
 #top -> B (중요한 글씨 Bold)

 //좀비프로세스
 #top 에서 좀비프로세스가 존재할시에는 찾아내서 불필요한 프로세스이면 #kill -9로 종료를 해야한다. 좀비프로세스는 정상적으로 종료되지 않아 메모리를 차지하고 있음으로 많을시엔 과부하가 걸릴 수가 있음 
 #ps -efl | awk '$2 == "Z" {print $0}' (두번째 필드가 Z으로 되어있는 라인을 모두 출력)

*프로세스 모니터링 [GUI]
 #gnome-system-monitor &