linux 프로세스
이번에는 프로세스(process)에 대해서 포스트 해보려고 합니다.
많은 분들이 프로세스와 프로그램, 프로세서 등등 헷갈려 하시는 분들이 많은데요. 간단하게 짚어드릴게요!
프로그램 : 디스크 상에 파일형태로 존재할 때 실행중이 아닐 때
프로세스 : 디스크 상에 파일형태로 존재할 때 실행 중일 때
프로세서 : cpu
실행중인지 아닌지를 구분하려면 메모리상에 있다면 실행중이라고 할 수 있겠죠. 예를 들어 어떠한 프로그램을 더블 클릭해서 실행을 시키면 디스크상에서 프로그램을 메모리상으로 올리고 프로그램이 프로세스가 되는 거죠!
이제 리눅스에서 프로세스 목록 확인 하는 법을 알아야 겠죠?
ps <options>
ps 만 입력할 경우 현재 실행중인 프로세서만 목록에 표시 됩니다.
bash 쉘과 ps 프로그램이 프로세스 목록에 뜨네욥. 별다른 프로그램을 실행하고 있지 않아 별 다른게 없습니다.
실행 중인 프로세스만 말고 전체 목록을 확인하는 방법은 옵션을 주면 되겠죠
ps -A or ps -e
목록과 더불어 자세한 정보를 확인하려면 ps -f
이 두가지를 합친 명령이 ps -ef 입니다.
리눅스를 사용하시는 분들은 ps -ef를 주로 많이 사용하시죠!
엄청 많이 나올겁니다.. 쭉~~ 각각 항목들에 대한 정보가 나오죠
UID : 프로세스를 실행한 사용자 ID
PID : 프로세스 번호
PPID : 부모프로세스 번호
C : cpu 사용량 (%)
STIME : 프로세스 시작 시간
TTY : 프로세스가 실행된 터미널의 종류와 번호
TIME : 프로세스 실행 시간 (실행전은 0)
CMD : 다음과 같은 명령어를 사용
그러면 프로세스를 종료하는 법을 알려드릴게요.
프로세스를 죽여버리는(?) 명령은 kill 입니다. 정확하게 말하자면 kill 명령은 종료하는 명령어가 아니라 시그널(신호)을 보내주는 명령어죠. 9번 시그널이 바로 프로세스 강제 종료시켜주는 시그널 입니다. 따라서 다음과 같이 사용하면 되겠죠.
kill -9 <pid>
정상적으로 프로세스가 종료가 되는지 확인해 볼까요?
네트워크 연결상태를 확인하는 ping 작업을 하던 도중 ctrl+z 를 눌러 작업을 일시중지 하고 쉘로 나왔습니다.
jobs 명령어로 확인해 보니.. Stopped 으로 멈춰있는걸 확인할 수 있습니다.
ps -ef 로 확인해보니 프로세스 목록에 ping 8.8.8.8 목록이 있군요? 프로세스 목록에 있으면 제대로 종료된 것이 아니고 잠시 멈춰 있다는 것을 알 수 있겠죠. pid가 4999인 것을 확인한고, kill 명령의 9번 시그널로 ping 작업을 종료했습니다. jobs 로 다시 확인해보니 Killed 되있는 것을 확인 할 수 있습니다.
ctrl+z : 일시중지 (작업목록으로 이동)
jobs : 작업목록 확인
마지막으로 프로세스 종류에 대해서 설명해 드릴게요. 프로세스의 종류는 다음과 같습니다.
(1). 포 그라운드 프로세스
- 하나의 프로세스만 실행할 수 있다.
(2). 백 그라운드 프로세스
- 여러개의 프로세스를 실행할 수 있다.
기존의 프로세스는 전부 포 그라운드에서 실행합니다. 하나의 프로세스밖에 실행 못하죠. 하지만 <명령어> 뒤에 &를 붙이면 백그라운드에서 실행이 가능합니다.
포그라운드로 ping 작업를 실행했고 중간에 ls -l 명령을 쓴게 보이시나요? 앞서 말했듯 여러개의 프로세스를 실행할 수 있다는 점이죠! 포그라운드에서 백그라운드로 전환하거나 백그라운드에서 포그라운드로 전환하는 명령도 있습니다.
bg <number> : 백그라운드로 전환, 명령입력 가능
fg <number> : 포그라운드로 전환, 명령입력 불가능
포그라운드로 프로세스가 진행중이라면 백그라운드로 전환 후 종료를 해주셔야 겠죠?
이상 프로세스에 관한 포스트를 마치겠습니다!
'OS > linux' 카테고리의 다른 글
linux 문자열 (0) | 2016.09.30 |
---|---|
linux 변수 +환경변수 (0) | 2016.09.29 |
linux 특수권한 (0) | 2016.09.29 |
linux 사용자 패스워드 (0) | 2016.09.29 |
linux 사용자와 그룹 (0) | 2016.09.27 |