본문 바로가기
Back-end/리눅스 개념

6장 프로세스

by 안녕주 2020. 12. 30.

(1) 프로세스

-1. 프로세스 (process)

           - 실행중인 프로그램을 프로세스라고 부른다

           - 각 프로세스는 유일한 프로세스 번호 PID를 갖는다.

           - 각 프로세스는 부모 프로세스에 의해 생성된다.

-2. 프로세스 상태 보기: ps(process status)

           - 사용법 : $ps [- 옵션]

             - 현재 시스템 내에 존재하는 프로세스들의 실행 상태를 요약해서 출력한다.

 

-3. ps aux

           - $ps aux(시스템 내의 모든 프로세스에 대한 정보)

 

-4. ps 출력 정보

 

 

-5. 특정 프로세스 리스트 :pgrep

           - 특정 프로세스만 리스트 : $ps –ef | grep –w sshd

           - 사용법 : $pgrep [옵셥] [패턴]

             - 패턴에 해당하는 프로세스만을 리스트 한다.

             - -l : PID와 함께 프로세스의 이름을 출력한다.

             - -f : 명령어의 경로도 출력한다.

             - -n : 패턴과 일치하는 프로세스들 중에서 가장 최근 프로세스만을 출력한다.

             - -x : 패턴과 정확하게 일치되는 프로세스만 출력한다.

 

 

(2) 작업제어

-1. 쉘과 프로세스

-2. 쉘 재우기

           - 사용법 : $ sleep

             - 명시된 시간만큼 프로세스 실행을 중지시킨다.

             -: $ (echo 시작; sleep 5; echo )

-3. 강제 종료

           - 강제종료 Ctrl + C ($ 명령어 ^C)

             - $(sleep 100; echo DONE  ..^C… $)

           - 실행중지 Ctrl-Z ($명령어 ^Z [1]+ Stopped 명령어)

-4. 후면 작업의 전면 전환 : fg(foreground)

           - $ fg %작업번호

-5. 전면 작업의 후면 전환 : bg(background)

           - 사용법 : Ctrl-Z 를 눌러 전면 실행중인 작업을 먼저 중지시킨 후 bg 명령어 사용하여   

                  후면 작업으로 전환

                        : $ bg %작업번호 : 작업번호에 해당하는 중지된 작업을 후면 작업으로 전환

-6. 후면 작업의 입출력 제어

           - 후면 프로세스 출력

             - 모니터에 출력한 것은 전면 프로세스의 출력과 뒤섞인다.

             - 출력 재지정 이용

              $ find . –name test.c -print > find.txt &

              $ find . –name test.c –print | mail chang &

           - 후면 프로세스 입력

             - 키보드로부터의 모든 입력은 전면 프로세스가 받기 때문에 후면 프로세스는

            키보드로부터 입력을 받을 수 없다.

             - 입력 재지정 이용

             $ 명령어 < 입력파일 &

             $ wc < inputfile &

 

(3) 프로세스제어

-1. 프로세스 끝내기 : kill

           - 프로세스 강제 종료

             - $ kill 프로세스번호

             - $ kill %작업번호

             - 프로세스 번호(혹은 작업 번호)에 해당하는 프로세스를 강제로 종료시킨다.

-2. 프로세스 기다리기 : wait

           - 사용법 : $wait [프로세스번호]

             - 프로세스 번호로 지정한 자식 프로세스가 종료 될 때까지 기다린다. 지정하지 않으면

            모든 자식 프로세스가 끝나기를 기다린다.

-3. 프로세스 우선순위

           - 실행 우선순위 nice

             - 19(제일 낮음) ~ -20(제일 높음)

             - 보통 기본 우선순위 0으로 명령어를 실행

           -nice 명령어

             - $ nice [-n 조정수치] 명령어 [인수들] : 주어진 명령을 조정된 우선순위로 실행

-4. 프로세스 우선순위 조정

           - 사용법 :  $ renice [-n] 우선순위 [-gpu] PID

             - 이미 수행중인 프로세스의 우선순위를 명시된 우선순위로 변경한다.

             - -g : 해당 그룹명 소유로 된 프로세스를 의미한다.

             - -u : 지정한 사용자명의 소유로 된 프로세스를 의미한다.

             - -p : 해당 프로세스의 PID를 지정한다.

 

(4) 프로세스의 사용자 ID

-1. 프로세스 사용자의 ID

           - 프로세스는 프로세스ID 외에 프로세스 사용자 ID와 그룹ID를 갖는다.

             - 그 프로세스를 실행시킨 사용자의 ID와 사용자의 그룹 ID

             - 프로세스가 수행할 수 있는 연산을 결정하는 데 사용된다.

           - id 명령어

             -사용법 : $ id [사용자명]

               - 사용자의 실제ID 와 유효 사용자 ID, 그룹 ID 등을 보여준다.

           - 프로세스의 실제 사용자 ID(real user ID)

             - 그 프로세스를 실행한 원래 사용자의 사용자 ID로 설정된다.

             - 예를 들면 chang 이라는 사용자 ID로 로그인하여 어떤 프로그램을 실행시키면 그

               프로세스의 실제 사용자 IDchang이 된다.

           - 프로세스의 유효 사용자 ID(effective user ID)

             - 현재 유효한 사용자 ID

             - 보통 유효 사용자 ID와 실제 사용자 ID는 같다.

             - 새로 파일을 만들 때나 파일의 접근 권한을 검사할 때 주로 사용됨

             - 특별한 실행파일을 실행할 때 유효 사용자 ID는 달라진다.

-2. set-user-id

           - set-user-id (set user ID upon execution) 실행 권한

             - set-user-id가 설정된 실행파일을 실행하면 이 프로세스의 유효 사용자 ID는 그 실행

              파일의 소유자로 바뀜. 이 프로세스는 실행되는 동안 그 파일의 소유자 권한 갖게 됨.

           - set-group-id(set group ID upon execution) 실행권한

             -실행되는 동안에 그 파일 소유자의 그룹을 프로세스의 유효 그룹 ID로 갖게 된다.

             -set-group-id 실행권한은 8진수 모드로는 2000으로 표현된다.

 

-3. set-user-id/set-group-id 설정

           - set-user-id 실행권한 설정

             -$chmod 4755 파일 혹은 $chmod u+s파일

           -set-group-id 실행권한 설정

             -$chmod 2755 파일 혹은 $chmod g+s파일

 

(5) 시그널과 프로세스

-1. 시그널

           -시그널은 예기치 않은 사건이 발생할 때 이를 알리는 소프트웨어 인터럽트이다.

 

-2. 주요 시그널

-3. 시그널 보내기 : kill 명령어

           - kill 명령어

             - 한 프로세스가 다른 프로세스를 제어하기 위해 특정 프로세스에 임의의 시그널을 강

            제적으로 보낸다.

           - 사용법 : $ kill [- 시그널] 프로세스 번호 , $ kill [-시그널] % 작업번호

             - 프로세스 번호(혹은 작업 번호)로 지정된 프로세스에 원하는 시그널을 보낸다. 시그

           널을 명시하지 않으면 SIGTERM 시그널을 보내 해당 프로세스를 강제 종료

 

 

 

 

핵심 개념

- 프로세스는 실행중인 프로그램이다.

- 프로세스는 프로세스ID를 갖는다. 각 프로세스는 부모 프로세스에 의해 생성된다.

 - 쉘은 사용자와 운영체제 사이에 창구역할을 하는 소프트웨어로 사용자로부터 명령어를 입력받아 이를 처리하는 명령어 처리기 역할을 한다.

- 전면처리는 명령어가 전면에서 실행되므로 쉘이 명령어 실행이 끝나기를 기다리지만 후면처리는 명령어가 후면에서 실행되므로 쉘이 명령어 실행이 끝나기를 기다리지 않는다.

- 프로세스는 실제사용자ID와 유효사용자ID를 갖는다.

- 시그널은 예기치 않은 사건이 발생할 이를 알리는 소프트웨어 인터럽트이다.

- kill 명령어를 이용하여 특정 프로세스에 원하는 시그널을 보낼 수 있다

'Back-end > 리눅스 개념' 카테고리의 다른 글

9장 유틸리티  (0) 2020.12.30
8장 파일 유틸리티  (0) 2020.12.30
5장 쉘과 명령어 사용  (0) 2020.12.30
4장 파일사용  (0) 2020.12.30
3장 유닉스 기본 명령어  (0) 2020.12.30

댓글