
| 명령 | 설명 |
|---|---|
| ps | 프로세스 목록 조회 |
| top | 프로세스 상태, 시스템 자원 정보 실시간 조회 |
| lsof | 프로세스가 사용중인 파일 목록 조회 |
| jobs | 작업 목록 조회 |
| bg, fg | 프로세스를 백그라운드 또는 포그라운드에서 실행 |
| kill | 프로세스에 신호를 보내 상태 변경 |
사용자가 저장 장치에 있는 프로그램을 실행하면 프로그램이 프로세스 상태로 메모리에 적재된다. 프로세스는 계층적으로 구성되며, 프로세스마다 자기 자신을 만들어 준 부모 프로세스가 존재한다. 부모 프로세스로 생성된 자식 프로세스는 부모 프로세스의 속성을 상속받는다. 부팅 과정 중 리눅스 커널이 시작하는 init는 유일하게 부모 프로세스가 없는 1번, 시스템 초기화 프로세스이다.
ps, top : 프로세스 목록 조회ps 명령어 옵션 목록| 옵션 | 설명 |
|---|---|
-a | 다른 사용자의 프로세스 상태도 표시 |
-x | 화면에 보이지 않는 프로세스까지 표시 |
-u | 프로세스를 사용한 사용자와 실행시간 표시 |
-ax | 현재 실행 중인 모든 프로세스 표시 |
-aux | 프로세스의 시스템 자원 사용률 표시 |
-e | 실행 중인 모든 프로세스를 대상으로 프로세스 목록 출력 |
-f | 완전한 형식으로 프로세스 목록 출력 |
-ef | PID로 정렬되어 있는 프로세스 목록 출력 |
f | 프로세스 사이 상속 관계를 시각적으로 표현. -f 옵션과 다르다. |
ps 명령만 입력(옵션 미사용) : 현재 로그인 한 사용자가 실행하는 프로세스만 표시

ps -ax : 현재 실행중인 모든 프로세스 조회. 이 때, 프로세스 목록 중 대괄호로 둘러싸인 프로세스는 커널이 생성한 프로세스이다.

ps -aux : 프로세스의 시스템 자원 사용률

프로세스 상태 값
표기 상태 R (Run/Runnable) CPU를 사용하는 상태 / 대기하는 상태 D (in Disk wait) 입출력이 완료될 때 까지 대기. 깨울 수 없는 수면 상태. 입출력 완료 시 다시 실행 대기(R)로 전환 S (Sleeping) 스스로 대기 중인 수면 상태. 시간이 경과하거나 특정 이벤트가 발생하면 다시 실행 대기(R)로 전환 T (sTopped) 외부 신호로 일시 정지된 상태. 또 다른 외부 신호를 수신하면 다시 실행 대기로 전환. Z (Zombie) 실행 완료한 프로세스는 부모 프로세스에 종료 신호를 보내고, 부모 프로세스에서 종료 신호를 받아들이면 프로세스가 소멸된다. 이 때 부모 프로세스에 문제가 있어 신호를 수신하지 못하면 좀비 상태로 남아있게 된다.
ps -ef : PID로 정렬되어 있는 프로세스 목록 출력

-aux 옵션과 동일하다.ps -f : 프로세스 목록 상세 조회.

현재 실행 중인 배시 셸과 셸에서 실행시킨 ps 명령 사이의 관계를 확인할 수 있다.
ps명령의 PPID가 배시 셸의 PID와 동일하므로 ps는 배시 셸의 자식 프로세스이다. 따라서 명령 행에서 입력하여 실행하는 명령은 배시 셸의 자식 프로세스라는 사실을 알 수 있다.
ps f : 프로세스 사이의 상속 관계 표시. 여러 프로세스 사이의 관계를 한눈에 파악하는데 도움이 된다.

top : 실시간 메모리 점유율, CPU 사용률 확인실시간 메모리 점유율, CPU 사용률 확인에는 ps -aux보다 top이 더 유용하다. ps는 개별 프로세스 상태를 보여주지만, top은 전체적인 프로세스를 알아볼 때 사용한다.

- 약 5초마다 내용이 업데이트 되며,
Space또는Enter키를 누르면 프로세스 목록이 바로 갱신된다.- 필요 시 단축키를 통해 프로세스 목록을 다양한 순서로 정렬할 수 있다.
Shift+p: CPU 사용량(%CPU) 순Shift+m: 메모리 사용량(%MEM) 순Shift+n: PID 순Shift+t: CPU 사용 시간별(TIME+)<또는>: 정렬 순서 결정q:top종료
lsof : 열린 파일 목록 조회리눅스 커널은 파일을 파일 기술자라는 숫자 값으로 구분한다. 리눅스는 모든 것을 파일로 추상화해서 다루기 때문에 일반 파일뿐만 아니라 입출력 장치, 네트워크 소켓, 파이프 같은 실행 중인 프로세스와 관련 된 시스템 장치를 파일 기술자로 관리한다.
이중 0은 표준 입력, 1은 표준 출력, 2는 표준 오류로 예약되어있다.
lsof : 열린 파일 목록을 화면에 표시. 사용자 명령 또는 시스템 프로세스로 사용중인 파일 목록 조회. 이 때 일부 파일은 로그인 해 있는 사용자 권한으로 조회할 수 없어 표시되지 않지만, sudo명령을 붙이면 루트 권한으로 시스템 파일까지 확인할 수 있다.
lsof -i : 네트워크 연결 정보 조회. 연결 정보는 NAME 필드에서 확인할 수 있으며, 연결된 상태의 TCP정보는 [호스트명]:[포트번호]->[원격호스트명]:[포트번호] 형식으로 표기된다.

-i옵션 뒤에 프로토콜과 포트 번호를 명시하여 결과를 필터링 할 수 있다. 예를 들어lsof -i TCP:80은 네트워크 연결 중 TCP 80번 포트(http)와 연결 정보만 보여준다.
lsof -u [사용자명] : 사용자 소유의 열린 파일 목록 조회
lsof -c [명령] : 특정 명령으로 사용되는 파일 목록 조회
lsof -p [PID] : 프로세스가 사용하는 파일 목록 조회. 시스템 파일 조회 시 루트 권한이 필요하다.
여러 작업을 동시에 처리하는 데 작업 제어 명령을 사용한다.
프로세스를 하나 실행시켰다가 중지시키며 작업을 제어해보자.

wget [옵션] [url링크]은 네트워크를 사용하여 파일을 받아오는 명령이다. ctrl + z를 눌러 작업을 중단한다.jobs : 목록을 화면에 표시하는 작업 제어 명령
jobs -l : 해당 프로세스의 PID를 함께 출력
bg [작업ID] 또는 & 추가: 중단된 프로세스를 백그라운드에서 실행PID와 달리 작업ID는 퍼센트(%)를 붙여서 구분한다. 아까 중지시킨 wget 명령을 백그라운드에서 실행한 후 jobs로 확인해보면 작업이 진행중인 상태로 변경됨을 볼 수 있다.


fg [작업ID] : 백그라운드에서 진행중인 작업을 다시 포그라운드로 실행작업을 포그라운드로 가져오면 작업이 끝날때까지 대기하거나 ctrl + c로 작업을 강제 종료할 수 밖에 없다.
sleep [시간] : 지정한 시간만큼 대기백그라운드에서 실행되는 작업을 대기 시키려면 &를 붙이면 된다.
ex) sleep 30& : 30초 대기
언제든 jobs -l 명령으로 진행 중인 프로세스의 작업ID와 PID를 확인할 수 있다.
kill : 프로세스 상태 변경kill 명령은 실행 중인 프로세스에 시스템 신호를 보내 프로세스 상태를 변경한다.
신호 종류는 kill -l로 확인할 수 있다.

kill [옵션] [PID] 형태로 입력한다.kill -9 [PID] : SIGKILL. 프로세스 강제 종료.kill -1 [PID] : SIGHUP. 프로세스를 멈추지 않고 다시 실행쉬운 입력을 위한 배시의 명령 히스토리
- 커서 이동키
↑를 누르면 이전에 자신이 내렸던 명령을 불러올 수 있다.- 명령 행에서
history명령을 내리면 이전에 자신이 실행했던 명령 목록을 조회할 수 있다.
- 이전에 실행했던 명령을 검색하고자
history명령 결과를 파이프를 이용해서grep명령으로 넘기는 방식을 자주 사용한다.
ex)history | grep [명령]
!!라고 입력하면 바로 전에 실행한 명령을 다시 실행한다.history명령 결과는[번호] [명령]형식이다.![번호]를 입력하면 번호에 해당하는 명령을 다시 실행한다.
실행중인 작업 목록에서 PID 알아내기
wget명령을 백그라운드 실행 후 PID를 찾아보자.
jobs -l: 백그라운드에서 실행중인 작업목록에서 PID를 알아낼 수 있다.ps -ef | grep wget:ps -ef결과 중에서grep으로 문자열 wget을 검색하여 화면에 표시한다.