(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로 로그인하여 어떤 프로그램을 실행시키면 그
프로세스의 실제 사용자 ID는 chang이 된다.
- 프로세스의 유효 사용자 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 |
댓글