재미로하는 공부

리눅스 프로세스 관리 ps, signal, kill, nice

lowcodingpython 2022. 3. 21. 11:01
반응형

Process

  • 프로그램이나 명령어를 실행하면 메모리에 적재되어 실제로 실행되고 있는 상태
  • 프로세스가 시작하면 프로세스 식별번호 PID(prcoess ID)가 부여
  • 해당 프로세스를 실행한 부모 프로세스를 나타내는 PPID(Parent process ID)
  • UID + GID 정보를 통해 해당 프로세스가 어느 사용자에 속해 있는지 확인 가능
  • 프로세스가 파일에 대해 갖는 권한 및 프로세스가 실행된 터미널, 명령어, 시작 시작 등 많은 정보가 있음

PS 명령어

- 현재 실행 중인 프로세스를 확인 가능
- 프로세스의 상태를 확인 가능
#ps [option]

옵션 설명
-a 실행 중인 프로세스 중 제어 터미널을 가지고 있는 프로세스 목록 출력
-e, -A 시스템에서 실행 중인 모든 프로세스의 상태를 출력
-f 각 명령에 대해 PID 및 PPID를 포함한 정보를 출력
-l -f 옵션보다 더 자세히 정보를 출력
-u 사용자 이름과 프로세스가 시작된 시간 출력
-x 터미널에 종속되지 않은 프로세스 출력
PID : 프로세스가 갖는 식별 번호 STIME : 프로세스가 시작된 시간
TTY : 프로세스가 실행된 터미널 포트 UID : 사용자의 UID
TIME : 총 CPU 사용 시간 PPID : 프로세의 부모 프로세스 식별 번호
CMD : 명령어 실행 라인  

단순 ps로는 아래 사진과 같이 확인 가능합니다.

#ps를 통해서 단순 확인 가능

프로세스를 확인할 때 가장 많이 사용하는 명령어
#ps -ef

pstree 명령어

#pstree [option] : 프로세스들의 구조를 트리 형식으로 출력

옵션 설명
-q 명령어 인수까지 출력
-n PID 순으로 정렬하여 출력
-p PID출력
-u UID 출력
-V 버전 정보 출력

#pstree -p 옵션을 통해 pid를 출력하는 방식으로 사용이 가능합니다.

Signal

  • 실행 중에 있는 프로세스에게 전달하는 메시지

대표 적으로 4개만 알아보도록 하겠습니다.

시그널 이름 시그널 번호 명령
SIGHUP 1 프로세스 종료 후 다시 실행
SIGINT 2 프로세스 종료 (Ctrl + C)
SIGKILL 9 프로세스 강제 종료
SIGTERM 15 프로세스 정상 종료

#kill -[signal] PID

#kill -15 998
-15 옵션을 주었으니 해당 프로세스를 정상 종료하라는 의미가 됩니다.


프로세스의 우선순위

  • 한 번에 여러 개의 프로그램이 동시에 동작할 수 있는 시스템
  • 프로세스의 중요도를 참고하여 우선순위를 설정
  • 우선순위가 높으면 낮은 프로세스보다 자원을 더 많이 배분받게 되도록 NICE 데이터를 이용하여 우선순위를 시스템은 결정하게 된다.
  • 우선순위는 -20 ~ 19까지 부여 가능 | -20에 가까울수록 높은 우선순위를 가지게 됨

ps -el 명령어로 우선순위 확인

nice 명령어

#nice -n [NICE값] [프로그램 명]

반응형