-
리눅스 바이블: Chapter6. Managing Running Process 정리리눅스 2021. 2. 12. 18:28
1. Understanding Process
프로세스란 실행중인 커맨드 인스턴스를 의미한다. 예를들어 시스템 위에 vi 커맨드가 하나 있을 때, 이 커맨드가
15명의 사용자에 의해 실행되고 있다면, 이는 15개의 다른 프로세스가 실행되고 있다는것을 의미한다.
프로세스들은 process ID로 구분되며, 한 시스템 위에서 유니크한 값을 가진다. 각각의 사용자들은 사용자의 정보에 따라
접근할 수 있는 프로세스들이 달라진다. 예를 들어 루트 사용자가 일반 사용자들보다 더 많은 시스템 파일에 접근할 수 있는
것과 같다.
그러므로 리눅스 시스템 관리자는 시스템 위에서 프로세스를 관리할 줄 알아야한다.
잘못된 방식의 프로세스 사용은 시스템 퍼포먼스에 문제를 야기할 수 있으므로
관리자는 문제를 찾을 줄 알고 해결할 줄 알아야 한다.
2. Listing Processes
ps 명령어로 프로세스 출력하기
각 항목들의 의미는 다음과 같다.
ps ax는 시스템에 동작중인 모든 프로세스를 보고 싶을 때 사용
ps aux는 ps ax에 소유자 정보까지 함께 추가하여 출력
top 커맨드는 ps 커맨드보다 화면에 최적화된 결과를 출력
또한 top 커맨드를 루트 권한으로 실행하여 프로세스를 죽이거나 우선순위를 변경할 수 있다.
3. Managing Background and Foreground Processes
윈도우는 GUI를 통해 여러 프로그램을 동시 실행 및 관리 가능하다.
하지만 리눅스 환경에서는 리눅스 쉘 환경에서 작업을 진행하며 다른 작업을 실행할때는
사용하지 않는 프로그램은 백그라운드로, 사용하려는 프로그램은 포그라운드로 이동시킨다.
앰퍼센드(&)를 붙여주면 백그라운드에서 실행하겠다는 의미
여기서 [1]은 job number, 456은 프로세스 ID를 의미한다.
jobs 커맨드 사용시 현재 백그라운드에서 실행되고 있는 프로세스를 보여준다.
4. Killing and Renicing Processes
kill 커맨드를 이용하여 프로세스에 신호를 보내고 프로세스를 죽이거나 여러동작을 시킨다.
- SIGKILL(9) : 프로세스 죽이기(종료)
- SIGTERM(15) : 프로그램 종료
- SIGHUP(1) : 설정파일 다시 읽기
- SIGINT(2) : 키보드로 부터 오는 인터럽트 시그널로 실행 중지
- SIGSTOP(17, 19, 23) : 터미널에 입력된 정지 신호 프로세스 중지
- SIGCONT(19, 18, 25) : stop 시그널로 정지된 프로세스 재실행- kill [프로세스ID]
- kill –[시그널 번호 or 이름] [프로세스 ID]nice 커맨드는 프로세스의 우선순위를 결정한다.
- nice 값에 따라 cpu에 접근하는 프로세스 결정
- nice 값은 -20에서 19까지 설정 가능 (기본값 : 0)
- 낮을수록 cpu 의존도가 높음
- 일반 사용자는 nice 값을 높일수만 있고 자신의 프로세스만 설정 가능
- 루트사용자는 모든 프로세스의 nice 값 설정 가능
- nice [nice값] [프로세스]
- renice [nice옵션] [변경할 nice 값] [프로세스ID]5. Limiting Processes with cgroups
cgroup은 control groups의 약자로 프로세스들이 사용할 수 있는 컴퓨팅 자원들을
제한하고 격리시킬 수 있는 리눅스 커널의 한 기능
- 프로세스를 특정 컨트롤 그룹에 속한 task로 식별 task 계층구조로 설정
- /etc/cgrules.conf 파일을 편집하여 사용자 자신의 cgroup 생성 특정 사용자/그룹 제한
- cgcreate 명령어로 cgroup 생성 /sys/fs/cgroup 계층에 해당 그룹 추가
c group으로 프로세스 제한가능한 항목들
blkio : 물리 드라이브와 같은 블록 장치에 대한 입력/출력 액세스에 제한을 설정
cpu : CPU에 cgroup 작업 액세스를 제공하기 위해 스케줄러를 사용
cpuacct : cgroup의 작업에 사용된 CPU 자원에 대한 보고서를 자동으로 생성
cpuset : 개별 CPU (멀티코어 시스템에서) 및 메모리 노드를 cgroup의 작업에 할당
devices : cgroup의 작업 단위로 장치에 대한 액세스를 허용하거나 거부
freezer : cgroup의 작업을 일시 중지하거나 다시 시작
memory : cgroup의 작업에서 사용되는 메모리에 대한 제한을 설정하고
이러한 작업에서 사용되는 메모리 자원에 대한 보고서를 자동으로 생성
net_cls : Linux 트래픽 컨트롤러 (tc)가 특정 cgroup 작업에서 발생하는 패킷을 식별하게 하는
클래식 식별자 (classid)를 사용하여 네트워크 패킷에 태그를 지정
ns : namespace 서브시스템EXERCISE
Exercise 2 answer
Exercise 3 answer
반응형'리눅스' 카테고리의 다른 글
리눅스 바이블: Chapter 7. Writing Simple Shell Script 정리 (0) 2021.02.21 리눅스 바이블: Chapter 8. Becoming a Linux System Administrator 정리 (0) 2021.02.13 리눅스 바이블: Chapter5. Working with Text Files 정리 (0) 2021.02.12 리눅스 바이블: Chapter4. Moving around the Filesystem 정리 (0) 2021.02.11 리눅스 바이블: Chapter3. Using The Shell 정리 (0) 2021.02.11