본문 바로가기
Research/Linux

프로세스 관리

by sunnyan 2005. 10. 25.
728x90
http://www.tiptech.net/lecture/linux/start/process.html프로세스 관리
  
  리눅스는 유닉스와 같이 멀티테스킹 운영체제이이다. 윈도우에서 음악을 들으면서 인터넷을 할 수 있는 것과 같은 것을 멀티테스킹이라고 한다. 즉 동시에 둘 이상의 프로그램을 실행시키는 것을 의미한다. 따라서 리눅스에서는 프로세스관리가 매우 중요하다.

13.1 포그라운드와 백그라운드

리눅스에서 지원하는 프로세스 생성방법에는 두가지가 있다. 쉘에서 단순히 명령을 실행시키는 것은 대부분 포그라운드에서 프로세스를 띄우는 것이다. 포그라운드는 기본 실행 모드로 표준입력(키보드)와 표준출력을 지원한다. 포그라운드로 실행을 하면 쉘은 그 프로세스가 종료되기를 기다렸다가 종료가 되면 다시 쉘 프롬프트를 띄워주게 된다.
이에 반하여 백그라운드로 프로세스를 실행시키면 쉘은 프로그램의 종료와 관계없이 바로 프롬프트를 보여둔다. 즉 백그라운드는 쉘 뒤편에서 계속실행되고 있는 것이다. 쉘에서는 다시 새로운 프로세스를 실행할 수가 있다. 이런식으로 여러개의 프로그램을 실행시키는 것이다.

다음은 백그라운드로 프로그램을 실행시키는 방법이다.

$ command &

실행하고자 하는 명령어 뒤에 '&' 문자를 입력하면 해당 프로그램은 백그라운드로 실행되게 된다. 리눅스에서는 프로그램을 백그라운드로 실행시키면 그 다음에 작업번호와 프로세스 번호를 보여준다.
백그라운드에서 실행되는 프로그램은 표준입력을 받을 수 없다. 그래서 백그라운드 프로세스는 장시간 입력값이 없이 실행되는 프로그램 실행에 알맞다. 그러나 백그라운드 프로그램도 표준출력과 에러는 공유한다. 따라서 백그라운드 프로그램의 출력값이 포그라운드 프로그램의 결과에 섞여 곤란해지는 경우가 발생한다. 이를 방지하는 방법은 출력 리다이렉션을 사용하는 것이다.

$ command > file &

그러면 file에 command의 모든 출력내용이 기록된다.

13.2 백그라운드로 전환하기

현재 포그라운드로 실행중인 프로그램을 백그라운드로 실행시켜야 할 필요가 있을 것이다. 이를 위해서는 'bg' 명령을 사용한다.
우선 현재 실행중인 프로세스를 중지시킨다. <Ctrl> + <Z>
그 다음 bg를 실행시킨다.

13.3 포그라운드로 전환하기

백그라운드에서 실행중인 프로그램을 포그라운드로 올려놓기 위해서는 'fg'라는 명령어를 사용한다. 단순히 fg만 실행시키면 가장 최근의 작업을 포그라운드로 돌려놓는다. 특정 프로세스를 포그라운드로 전환하고 싶으면 fg %<작업번호>를 입력한다.
작업번호는 'jobs'라는 명령어로 확인한다.

13.4 프로세스 죽이기

가끔식 프로세스를 강제로 종료시켜야 할 때가 있다. 포그라운드에서 실행되는 프로그램은 <Ctrl> + <C>를 이용해 종료시킬수 있다. 그러나 백그라운드에서 실행중인 프로그램은 그렇게 할 수가 없다.
이때 kill이라는 명령을 사용하게 될 것이다. 이 명령은 프로세스에게 정해져 있는 시그널을 보냄으로서 프로세스와 통신을 하는 것으로 다음과 같이 사용한다.

$ kill <PID>
또는
$ kill %<작업번호>

이는 단순히 15번 시그널을 보내는데 대부분의 프로세스는 이 시그널을 받으면 종료하도록 되어있다. 그러나 어떤 이유로 죵료되지 않는 프로세스가 있을 수 있다. 이 프로세스는 9번 시그널을 보내야 하는데 9번 시그널은 그 어떤 프로세스도 거부할 수 없는 막강한 시그널이다.

$ kill -9 <PID>

13.5 프로세스 확인

리눅스 명령어 중 많이 사용되는 명령어가 바로 ps 명령어이다. 이 명령어는 현재 실행중인 프로세스 목록을 보여주는데 단순히 ps만 입력하면 현재 로그인한 사용자가 실행시킨 프로세스만 보여준다. 전체 사용자의 프로세스를 보고 싶으면 a 옵션을 사용한다.

이것으로서 리눅스 기초 부분을 마칠까 한다.
여러분은 적어도 리눅스 설치, 그리고 간단한 관리와 명령어를 알고 있는 셈이다. 이제 중급 리눅서로의 한발을 내딛어 보자.



728x90

'Research > Linux' 카테고리의 다른 글

Find files that contain a text string:  (0) 2008.09.30
.vimrc  (0) 2005.11.07
kernel thread 사용하기  (0) 2005.10.25
Ipsysctl tutorial 1.0.4  (0) 2005.10.24
왜 커널을 컴파일 할때 -msoft-float 옵션을 사용합니까?  (0) 2005.10.07