2 분 소요

📝프로세스란?

  • 단순히 실행 중인 프로그램이라고 할 수 있습니다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당 받아 실행중인 것을 말합니다.

    여러 명의 사용자들에 의해 공유되고 있는 응용프로그램은 일바적으로 각 사용자들의 실행단계에서 하나의 프로세스를 갖게됩니다. 즉, 모든 프로그램은 실행 될 떄 하나 이상의 프로세스를 갖습니다.


상황에 따라 명칭이 달라지는 프로세스

부모 프로세스 다른 프로세스를 생성할 수 있는 프로세스
자식 프로세스 부모 프로세스로부터 만들어지는 프로세스, 자식프로세스 종료 후 부모프로세스 종료
데몬 프로세스 일반적으로 사용자가 실행시키지 않고 커널에의해 구동, 백그라운드로 동작, 특정 서비스를 제공하기 위해 구동, 파일 이름끝에 ‘d’를 붙여서 사용하는 것이 일반적입니다. ‘Windows의 서버스’ 와 같은 존재입니다.
고아 프로세스 일반적으로 자식프로세스는 종료되면 부모 프로세스로 되돌아 가는데 부모 프로세스가 먼저 종료된 경우에 자식 프로세스를 고아 프로세스라고 합니다. 고아 프로세스는 init 프로세스가 처리해줍니다.
좀비 프로세스 정상적으로 프로세스를 종료했지만 자원을 반납하지 않은 상태로 계속 남아있는 상태 (자원을 점유한 상태에서 동장하지 않는 프로세스)
   

윈도우의 작업관지자와 비슷한 ps 명령어

  • 여러분들이 컴퓨터를 사용할때 가장 많이 사용하는 명령이 있습니다. 그 중 한가지 경우가 프로세스에 대한 정보를 알고 싶을 경우인데요. 예를 들어 어떤 프로세스가 수행중인데, 이 프로세스가 CPU를 굉장히 많이 소모시킨다고 합니다. kill 명령으로 그 프로세스를 종료시키고 싶지만 pid를 알아야하겠죠. 이때 pid등의 정보를 볼 수 있는 명령이 있습니다. 그 process의 상태를 알고 싶을때 매우 많이 사용하는 명령이 바로 ps입니다.

    ps는 프로세스에 대한 많은 정보를 담고 있고 매우 많이 사용되는 명령으로 옵션이 매우 다양합니다. ps는 옵션에는 세가지 종류가 있습니다.

    1. Unix Option : 앞에 ‘-‘ (dash)가 붙는 옵션 표기방법입니다.

    2. BSD Option : ‘-‘ 를 붙이지 않습니다.

    3. GNU Option : 명령어 앞에 ‘–’ (double dash)를 붙입니다.

명령어

-e 시스템 상의 모든 프로세스 정보를 출력
-f 상세한 정보 출력
  일반적으로 ps -ef 명령어를 많이 사용합니다. ps -ef명령어의 결과는 다음과 같이 나옵니다.
UID 프로세스 소유자 ID
PID 프로세스 ID
PPID 부모 프로세스 ID
C 스케줄링을 위한 CPU 사용량, 별로 의미 없는 필드
STIME 프로세스 시작 시간
TTY 장치 번호 (? :: 터미널에서 실행된 프로세스가 아닌 것들)
TIME 프로세스에 대한 누적 실행 시간
CMD 명령 옵션 + 아규먼트
  • pstree
    • 명령어는 실행되고 있는 프로세스들간의 연결구조를 트리형식으로 보여줍니다.

프로세스 제어 명령어

  • 프로세스를 제어할 떄 사용하는 시그널 번호

    • 1 SIGHUP(Sig Hang Up), 프로세스 종료 없이 프로그램을 새로 초기화
      2 SIGINT, Interrupt, Ctrl + C 명령어 실행 중 중단 명령어
      9 SIGKILL, kill, 무시할 수 없는 종료
      15 SIGTERM, terminate, 무시할 수 있는 종료
      • 시그널은 프로세스를 제어하기 위해서 프로세스에게 전달하는 신호값
  • 프로세스에게 시그널 번호를 전송하는 kill, pkill 명령어

    • kill PID로 프로세스를 제어
      pkill 프로세스 이름으로 제어 :: 이름에 해당하는 프로세스 모두 DOWN 가능

댓글남기기