프로세스
프로세스란
/proc/PID
프로세스는 프로그램이 메모리에 적재되어 실제로 실행되고 있는 상태를 의미한다.
프로세스는 컴퓨터 내에서 실행중인 프로그램의 인스턴스 이다.
여러 명의 사용자들에 의해 공유되고 있는 응용프로그램은 일반적으로 각 사용자들의 실행 단게에서
하나의 프로세스를 갖는다. 프로세스는 자프로세스라고도 불리는 서브프로세스를 시작시킬 수 있다.
(1) 자식 프로세스(Child Process) & 부모 프로세스(Parent Process)
- PID(Process Ident if ication) : 프로세스가 시작할 때 할당받는 프로세스 식별번호
- PPID(Parent Process Identif ication) : 부모 프로세스 식별번호 (서브 프로세스를 실행시킨 프로세스)
# ps
# bash
# ps -f
PID=17086 (
-----------+
l PID=17106 , PPID=17086 (
+----------------------------
#ps -ef | more
UID :프로세스를 실행시킨 사용자 , 프로세스 주인
PID :프로세스 아이디 , 프로세스 식별번호
PPID :부모 프로세스 아이디
C :현재 사용되지 않는 필드
STIME :Start Time, 프로세스 실행 시작 시간
TTY :제어 터미널, 프로세스가 실행된 터미널
TIME :CPU 사용 누적 시간
CMD :명령어(옵션 + 인자 포함)
pstree | head -20 (ps를 tree구조로 출력)
프로세스의 정보
(1) 프로세스 정보가 존재하는 디렉터리
gedit & ( 새로운 명령 ) 후 ps 결과값 확인
/proc 라는 디렉터리에 각 프로세스에 해당되는 PID디렉터리 들이 있다.
프로세스 관리
쉘 프로프트에 명령어를 입력해서 포그라운드 상태($ cat > testfile)로 프로그램을 실행시킴
백그라운드는 명령행 끝에 &를 붙여서 사용하면 쉘 프롬프트가 떨어지고 대신 프로세스는 사용자가
보지 않는 상태로 실행된다.
백그라운드 프로세스 확인 : $ bg (foreground)
백그라운드 프로세스 전환 : $ fg (background)
(1)프로세스 실행
fg) # ls
bg) # ls &
(fg 형태로 프로그램이 실행되면)
# gedit
명령어를 수행해도 출력결과가 보이지 않는다
부모 프로세스가 종료되면 자식 프로세스가 종료된다
(bg 형태로 프로그램이 실행되면)
# gedit &
명령어 수행 출력결과가 정상적으로 수행된다
부모 프로세스가 종료되어도 자식 프로세스가 종료되지 않는다
! ls 같은 경우 fg 형태 이지만 끝이 나기 때문에 정상적 수행이 가능하다
gedit 같은경우 끝나지 않기 때문에 fg 형태로는 터미널 에서 쉘 수행이 불가능하다
GUI 툴 등 수행이 오래 걸리는 프로그램들은 백그라운드 로 실행시킨다
프로그램 실행
포그라운드 & 백그라운드 실행 ( 전환 )
<CTRL + Z> fg상태에서 CTRL + Z 으로 STOP상태로 둔다
jobs
bg 1
fg 1 // CTRL + C
(2)프로세스확인
# ps -ef | grep xinetd
# ps aux | grep xinetd
명령어 형식
# ps 현재 터미널에서 실행된 프로세스 정보 확인
# ps -l 현재 터미널에서 실행된 프로세스의 간략한 정보 확인
# ps -U 특정한 사용자가 실행시킨 프로세스 정보 확인 ( ps -U user01)
# ps -t pts/5 해당 터미널에서 실행시킨 프로세스의 간략한 정보 확인
# ps -a 현재 터미널에서 실행된 프로세스의 자세한 정보 확인
# ps -au 다른 사용자의 프로세스 상태도 자세히 표시
# ps -aux 원래 동작중인 것 포함하여 전체 프로세스의 자세한 정보 확인
# ps aux | grep xinetd (# ps -ef | grep xinetd)
# ps -aux | grep xinetd
# ps -e 정보를 전부다 출력
# ps -f 정보를 좀더 길게 출력
# ps -ef 정보를 좀더 길게 전부다 출력
(3)프로세스 종료
# kill PID ( # kill -15 PID, # kill -TERM PID)
# kill -[1 | 2 | 9 | 15] PID PID
# killall httpd
kill -2 INT PID
kill -9 KILL PID
# kill -l
SIGHUP : 프로세스 재시작 kill -1
SIGINT : 인터럽트(CTRL + C) kill -2
SIGKILL : 강제종료 kill -9
SIGTERM : 정상종료 kill -15
kill 명령에 아무 신호도 입력하지 않으면 15번 신호인 SIGTERM을 보낸다
프로세스 모니터링
반복적 확인 하는 작업
(1)top
-ps와 같은명령어, 차이점은 top는 실시간 모니터링 ps는 한번 확인
# top GUI # gnome-system-monitor
# tail -f /var/log/messages GUI # gnome-system-log
# top -u oracle 사용자가 실행한 프로세스만 모니터링
# top -u root
# top -u oracle
# top -u wasuser
# top -p PID 지정된 PID 번호만 모니터링
top 명령어 해석
uptime -
사용자 별로 모니터링
# top -u fedora
몇개의 프로세스만 모니터링
# top -p 1
(2)gnome-system-monitor
# gnome-system-monitor
# gnome-system-log
free 메모리 사용량 출력
(3)lsof
# lsof
# lsof -i 소켓
# lsof -p PID
# lsof -c senmail
(4)pamp
프로세스가 사용하고 있는 메모리의 주소를 확인
ps -ef | grep sendmail
pmap PID
(5)pstree
실행중인 프로세스 상태를 트리 구조로 보여주는 명령어
(6)nice/renice
프로세스를 실행하는데 있어서 프로세스에게 우선권을 부여 할 수 있다.
일반적으로 프로세스들은 설정된 우선권 순위대로 실행이 되는데
nice명령을 사용하게 되면 프로세스의 실행 우선권을 바꿀 수 있다. 우선권 순위는 -20에서
19 까지의 범위를 가지며 nice값이 적을수록 우선순위를 값이 높아지게된다
프로세스의 우선순위: 프로세스가 운영체제의 CPU를 선점할 수 있는 권한
nice : 프로그램을 실행 할 때 프로세스의 우선순위를 성정할 수 있는 CMD
renice : 실행중인 프로그램의 우선순위를 조정할 수 있는 CMD
ps -l
PRI : 숫자가 크면 우선순위가 낮음
NI : nice값
-------------------------------------------------------------------------------------------------------------------------------------
프로세스 관리
- 프로세스 정보(/proc/PID/*)
PID, PPID, Contol Terminal, ...
- 프로세스 관리
프로세스 실행
(fg) # ls
(bg) # ls & (GUI프로그램,오래걸리는프로그램 실행시 터미널을 계속 사용할떄)
프로세스 확인
# ps -ef | grep xinetd
# ps aux | grep xinetd
프로세스 종료
# kill [-1|-2|-9|-15] PID PID
잡 실행
(fg) # ls
(bg) # ls
잡 확인
# jobs
# fg <Job ID>
# bg <Job ID>
잡 종료
# kill %1 ( % : Job ID)
- 프로세스 모니터링
top CMD
# top (cPu/Mem)
# top -u fedora
# top -p PID,PID,PID
-------------------------------------------------------------
lsof CMD
# lsof
# lsof -p PID
# lsof -c sshd
pmap CMD
pstree CMD
nice/renice CMD
# nice -(-20 ~ 19) CMD
# nice -n (-20 ~ 19) CMD
# renice (-20 ~ 20) PID
# renice -n (-20 ~ 20) PID
# nice -10 /root/bin/backup.sh &
# renice 10 PID
-------------------------------------------------------------
'Learning > └Essential & Admin' 카테고리의 다른 글
Linux_ServerAdmin (1)디렉토리 구조 (0) | 2016.10.28 |
---|---|
리눅스 원격접속 과 파일전송_Unit15 (0) | 2016.10.28 |
리눅스 쉘특성_Unit13 (0) | 2016.10.26 |
리눅스 압축 과 아카이빙_Unit12 (0) | 2016.10.25 |