삶 가운데 남긴 기록 AACII.TISTORY.COM
리눅스 프로세스 관리 본문
pid
메모리에 로딩된 프로세스를 구분해주는 id 값입니다.
kill 명령어와 pid 값으로 강제로 종료할 수 있습니다.
다만 부모 프로세스와 자식 프로세스로 종속되어 실행되는 프로세스들도 있으므로 주의해야 합니다.
jobs
jobs 명령어를 실행하면 현재 실행되는 백그라운드 프로세스의 번호를 출력해줍니다.
ps
현재 프로세스 상태를 확인하는 명령어 입니다.
kill
프로세스를 강제 종료하는 명령어 입니다.
-9 옵션과 함께 사용하면 무한 루프를 도는 프로세스도 강제 종료 됩니다.
pstree
부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여주는 명령어 입니다.
단축키
stty -a 하면 정의된 문자를 볼 수 있습니다.
인터럽트 : ctrl-c
강제종료 : ctrl-\
end of file : ctrl-d
suspend (일시 정지, 백그라운드 작업 전환) : ctrl-z
background process로 실행 법
백그라운드 프로세스는 실행은 되었지만 화면에는 표기되지 않고 실행되는 프로세스를 말합니다.
명령 뒤에 & 을 붙입니다.
예)
find / -type d 2>/dev/null > list.txt &
foreground process 로 수행 중 너무 오래 걸리는 경우 대처
포그라운드 프로세스는 백그라운드와는 다르게 화면에서 실행되면서 사용자와 상호작용하는 프로세스를 말합니다.
1. ctrl-z 으로 일시 정지
2. bg %1 으로 백그라운드 프로세스로 옮기기. 여기서 1은 job의 id 값으로 jobs 명령을 통해 앞에 나오는 숫자입니다.
3. fg %1 으로 포어그라운드 프로세스로 다시 옮길 수 있습니다.
job id로 프로세스 강제 종료
예) kill %1 으로 해당 작업 프로세스 종료. %를 빼먹으면 pid 1 인 프로세스를 종료시키니 주의.
background process를 일시 정지 시키기
1. jobs 명령어로 job id를 알아냅니다.
2. fg %1 알아낸 job id 가 1이라면 포어그라운드 프로세스로 전환합니다.
3. ctrl-z 으로 일시정지 시킵니다.
nohup으로 로그아웃 해도 해당 프로세스를 백그라운드로 작업시키기
예)
nohup tar cvf source.tar /opt/src &
표준 출력과 표준 에러는 nohup.out 파일에 저장합니다.
리눅스 Free -mt 메모리 부족 현상
free 명령어 혹은 top 명령어를 사용했을 때 리눅스는 종종 사용가능 메모리가 매우 적게 표시되는 경우가 있습니다.
물론 메모리 누수일 경우 일 수도 있으나 리눅스는 free 메모리를 디스크 cache 혹은 buffer로 사용하여 어플리케이션의 로딩 속도를 향상하는데 이 때문에 사용가능 메모리가 적게 표시될 수 있습니다.
물론 리눅스는 free 메모리가 필요한 경우 cache를 줄이고 메모리를 확보합니다.
그래서 실제로 사용가능한 메모리를 계산하기 위해서는 free + buffers + cached을 모두 합한 용량이 됩니다.
free -mt 명령어를 실행 후 -/+ buffers/cached 라인을 확인하면 됩니다.
파이프
파이프는 2개의 프로세스를 연결해주는 통로를 의미합니다.
| 기호(vertical bar)를 사용해서 연결합니다.
파일리스트가 많아서 1페이지에 모두 담을 수 없어서 1페이지씩 보는 예)
ls -l /etc | more
필터
모든 출력을 표시하는 것이 아니라 필터링해서 출력하는 명령입니다.
grep, tail, sort 등을 사용합니다.
java가 들어간 프로세스만 출력하는 예)
ps -ef | grep java
리다이렉션
표준 입출력은 키보드와 모니터지만 파일로 입출력을 할 때 redirection을 사용할 수 있습니다.
> 기호 하나는 overwrite(덮어쓰기) 되며 >> 기호 두 개를 쓰면 append(이어쓰기) 가 됩니다.
화면 출력을 파일로 리다이렉션 하는 예제
ls -l > list.txt
파일을 화면으로 리다이렉션 하는 예제
sort < list.txt
service (daemon)
서비스 혹은 데몬은 백그라운드 프로세스의 일종으로 서버용 프로세스를 말합니다.
운영체제가 부팅이 되면 따로 실행하지 않아도 자동으로 실행이 되며 강제 종료하지 않는 이상 계속 해서 실행된 상태로 서비스를 해주는 프로세스 입니다.
서비스는 /usr/lib/systemd/system/ 경로에 '서비스이름.service' 라는 파일명으로 존재하고 있습니다.
서비스의 실행과 종료는 보통 systemctl 명령어로 start/stop/restart로 제어합니다.
socket
서비스는 항상 가동되는 반면, 소켓은 외부에서 특정 서비스를 요청할 경우에 systemd가 구동시켜줍니다.
그리고 요청이 끝나면 소켓도 같이 종료되는 특성이 있습니다.
소켓과 관련된 스크립트 파일은 /usr/lib/systemd/system/ 경로에 '소켓이름.socket' 이라는 파일명으로 존재하고 있습니다.
'DEV&OPS > Linux & Cloud' 카테고리의 다른 글
RAID (0) | 2022.12.25 |
---|---|
CentOS 7 디스크 관리 (feat. VMware) (0) | 2022.12.22 |
CentOS 7 네트워크 관리 (0) | 2022.12.20 |
CentOS 에서 crontab 과 at사용법 (0) | 2022.12.14 |
git 추적 중지 (0) | 2022.11.01 |