프로세스 명령어

프로세스

  • 프로세스 동작 원리 : 시스템이 구동 될 때, 커널은 /etc 에 위치한 init 이라는 스크립트를 실행함으로써 시스템 서비스들을 차례대로 시작시킨다.
    이 서비스들은 데몬 프로그램(백그라운드)으로 구현되어 있기 때문에 로그인하지 않은 상태에서도 필요 작업들을 수행한다.

  • 프로그램은 프로그램을 실행시킬 수 있는데, 이를 부모와 자식 프로세스라고 표현한다.

ps(process status) 명령어

명령어 출력 의미

hojin@hojin3:/proc$ ps -al
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R  1000  1539  1486  0  80   0 -  1870 -      pts/0    00:00:00 ps
  • USER : 프로세스 소유자의 계정이름
  • PPID: 부모프로세스의 PID
  • %CPU : 프로세스의 CPU 시용량
  • %MEM: 프로세스가 사용하는 시스템 메모리 자원량
  • vsz: 가상메모리
  • RSS: 시용된 실제 메모리
  • TIME: 총 CPU 사용시간
  • CMD: 실행된 프로세스 명령어

프로세스 정보 확인

프로세스 출력 : 리눅스는 다중 사용자, 사용 작업 시스템이기 때문에 여러 개의 프로세스를 동시에 수행하기 때문에 항상 어떤 프로세스들이 실행되고 있는지 모니터링할 필요가 있다.
따라서 현재 시스템에서 실행 중인 프로세스에 관한 정보를 출력하여 사용자에게 정보를 제공하는 명령어가 필요한데 이때 사용하는 명령어가 ps이다.
참고) 윈도우에서 특정 프로세스가 실행 중인지 확인하거나 강제 종료하기 위해 작업 관리자를 사용하듯이, 리눅스에서는 ps 명령어가 자주 사용된다.

$ ps [옵션]

옵션

  1. 기본 프로세스 출력
    a : 터미널과 연관된 프로세스만 출력 x : 터미널과 연관되지 않는 프로세스만 출력 -A : 모든 프로세스 출력 (-e와 동일) -e : 모든 프로세스 출력 -a : 세션 리더와 커미널과 연관되지 않은 프로세스를 제외하고 모든 프로세스를 출력
  2. 지정한 프로세스 출력
    p : 지정한 PID 목록의 정보만 출력 -C : 지정한 프로세스의 실행 파일 이름의 정보만 출력 -u : 특정 사용자의 프로세스 정보를 출력
  3. 프로세스 표시 형식
    u : 프로세스의 소유자 정보를 함께 출력 l : BSD 형식의 긴 형식으로 출력 e : 프로세스 정보와 함께 프로세스의 환경변수 정보도 출력 -l : 긴 포맷으로 출력 -o : 사용자 정의 형식 지정 가능
  4. 프로세스 장식
    f : 프로세스 계층을 텍스트 형식의 트리구조를 보여줌. -f : 전체 포맷으로 출력
  5. 조합 예제
    ``` $ ps aux # 모든 터미널의 프로세스를 소유자 정보와 함께 프로세스 정보를 출력

$ ps aux | grep apache # 특정 프로세스(apache)만 출력 ``` 부모 프로세스와 자식 프로세스의 관계를 보려면 -ef 가, 프로세스 상태를 보는 용도로는 aux 가 더 적당하다.

ps 명령어는 다른 명령어들과의 차이라면 -(대쉬)가 안들어간 옵션이 있다는 것인데, 이는 전통유닉스(System V, BSD)에 따라 나뉜다. System V 의 경우 -(대쉬)를 사용하고, BSD 같은 경우는 -(대쉬)가 없다.
물론 출력결과도 조금씩 다르다. 자신의 상황에 맞게 쓰면 된다.

서브목차