프로세스 조회
ps 명령어는 리눅스에서 현재 실행 중인 프로세스를 조회할 때 사용된다.
ps 명령어는 프로세스 상태, PID, 메모리 및 CPU 사용량 등의 정보를 제공하며, 시스템에서 실행 중인 작업을 모니터링하거나 디버깅할 때 유용하다.
ps
기본적으로 ps 명령어를 실행하면 현재 터미널에 연결된 프로세스 목록을 출력한다.
기본 출력에는 다음과 같은 정보가 포함된다.
- PID: 프로세스 ID
- TTY: 프로세스가 연결된 터미널
- TIME: 프로세스가 사용한 CPU 시간
- CMD: 실행된 명령어 이름
모든 프로세스 목록 출력
ps -e
프로세스의 상세 정보 출력 (PID, PPID, UID, 시작 시간 등 포함)
ps -f
현재 쉘 세션의 프로세스 정보를 확인
ps $$
ps $$ 명령어는 현재 사용 중인 쉘 세션의 프로세스 정보를 확인하는 간단한 방법이다. 이를 통해 현재 쉘의 PID와 상태를 확인할 수 있다.
모든 프로세스의 상세 정보 출력 (주로 시스템 상태를 전체적으로 확인할 때 사용)
ps -ef
특정 프로세스의 PID 찾기
ps -ef | grep apache
- paralle+는 프로세스를 실행한 사용자를 의미한다. 여기서는 “parallels” 사용자가 grep 명령을 실행했음을 의미한다. (+는 이름이 길어서 잘린 것).
- 4577은 해당 프로세스의 PID(프로세스 ID)이다.
- 0.0은 CPU 사용률을, 0.1은 메모리 사용률을 나타낸다.
- 4344는 프로세스의 가상 메모리 크기(KB)이고, 2084는 물리 메모리 크기(RSS)이다.
- pts/1은 프로세스가 연결된 터미널을 나타낸다.
- R+는 프로세스의 상태를 의미하며, 여기서는 Running(실행 중)을 나타낸다.
- 21:38는 프로세스가 시작된 시각이다.
- 0:00은 프로세스가 CPU에서 사용한 총 시간이다.
- grep --color=auto apache는 실행된 명령어를 나타낸다.
현재 apache라는 이름의 실제 프로세스가 실행되고 있지 않음을 의미한다. grep 자체가 검색한 내용을 출력한 것이기 때문에, 진짜 apache 프로세스가 실행 중인지 확인하려면, ps aux | grep apache | grep -v grep 명령을 사용하여 grep 명령 자체를 제외하고 확인할 수 있다.
ps aux | grep apache | grep -v grep
CPU 사용률 기준 상위 10개 프로세스 보기
ps aux --sort=-%cpu | head -n 10
프로세스 종료
kill 명령어는 프로세스에 시그널(Signal)을 보내기 위해 사용된다.
기본적으로 프로세스를 종료하는 데 자주 사용되지만, 특정 시그널을 지정하여 프로세스를 일시 중단하거나, 다시 시작하는 등의 작업도 수행할 수 있다.
kill [옵션] <PID>
<PID>는 시그널을 보낼 프로세스의 ID(프로세스 ID)이다.
기본적으로 kill 명령어는 SIGTERM(15) 시그널을 보낸다. 이 시그널은 정상 종료를 요청하는 시그널로, 프로세스가 종료 전에 필요한 정리 작업을 수행할 수 있다.
- kill -l : 사용 가능한 시그널 목록을 출력한다.
- kill -s <시그널 이름> <PID> : 특정 시그널 이름을 지정하여 프로세스에 보낸다.
- kill -<시그널 번호> <PID> : 시그널 번호로 지정하여 프로세스에 보낸다.
특정 프로세스 종료 (SIGTERM 사용)
kill 1234
프로세스 ID가 1234인 프로세스에 SIGTERM 시그널을 보내 정상 종료를 요청한다.
강제 종료 (SIGKILL 사용)
kill -9 1234
# 또는
kill -SIGKILL 1234
# 또는 SIG 생략
kill -KILL 1234
특정 시그널 지정하여 전송 (예: SIGHUP)
kill -HUP 1234
# 또는
kill -1 1234
SIGHUP(1) 시그널은 프로세스를 다시 로드하거나 재시작하도록 알린다. 주로 설정 파일이 변경된 경우 설정을 다시 적용하는 데 사용된다.
특정 포트번호를 사용하는 프로세스를 찾고, 종료
sudo lsof -i :8080
이 명령은 8080번 포트를 사용 중인 프로세스를 찾는다.
출력에는 프로세스 이름, PID, 사용자, 프로토콜 등의 정보가 포함된다.
kill -9 23204
# 또는
kill -SIGKILL 23204
# 또는 SIG 생략
kill -KILL 23204
# 또는 정상 종료 요청
kill 23204
Background, Foreground
백그라운드에서 프로세스 실행
명령어 끝에 &를 붙이면 해당 프로세스가 백그라운드에서 실행된다.
sleep 10 &
포그라운드에서 실행 중인 프로세스를 백그라운드로 전환
- 프로세스 일시 정지: Ctrl + Z를 눌러 포그라운드 프로세스를 일시 정지한다. 이로 인해 프로세스가 Stopped 상태가 된다.
- 백그라운드로 전환: bg 명령어를 입력하면, 일시 정지된 프로세스가 백그라운드에서 계속 실행된다.
'컴퓨터 구조 & 운영체제 > Linux' 카테고리의 다른 글
[Bash 스크립트] Bash 스크립트 기본 개념과 변수 (0) | 2024.11.10 |
---|---|
[Linux] 리디렉션과 파이프라인 (0) | 2024.11.09 |
[Linux] 프로세스와 시그널 (0) | 2024.11.08 |
[Linux] 스크립트 작성 및 실행 (0) | 2024.11.07 |
[Linux] 사용자와 그룹 (0) | 2024.11.07 |