LINUX/리눅스 쉘 스크립트 바이블 정리

[리눅스 바이블] 4. 더 많은 bash 쉘 명령

은재정 2022. 2. 3. 21:36

 

프로그램 감시하기

<프로세스 엿보기>

리눅스는 ps 명령을 통해 실행되고 있는 모든 프로세스에 대한 정보를 보여준다.

다만 기본 ps 명령은 그 중 아주 일부만 보여주는데, 더 많은 정보를 보고 싶다면 옵션을 붙여줘야 한다.

리눅스에서 사용되는 GNU의 ps 명령은 세 가지 유형의 커맨드라인 매개변수를 지원한다.

1. 대시가 앞에 붙는 유닉스 스타일

2. 대시가 앞에 붙지 않는 BSD 스타일

3. 이중 대시가 붙는 GNU

위는 ps -ef를 입력했을때 출력된 결과물이다.

(UID - 프로세스 실행에 책임이 있는 사용자, PID - 프로세스의 id, PPID - 부모 프로세스의 pid,

C - 프로세스 수명 동안 프로세서 사용률, STIME - 프로세스 시작 시스템 시각,

TTY - 프로세스 시작한 터미널 장치, TIME - 프로세스 실행 누적 CPU 시간, CMD - 프로그램 이름)

위는 ps l의 출력결과이다. VSZ는 가상메모리에 있는 프로세스의 크기(KB), RSS는 스왑되지

않은 프로세스가 사용하는 물리적 메모리, STAT은 현재 프로세스의 상태를 나타낸다.

<실시간 프로세스 모니터링>

ps는 특정 시점에 대한 정보만을 표기하므로 실시간으로 프로세스가 어떻게 실행되는지
알기 위해서는 top 명령을 사용한다.

PR - 프로세스 우선순위, VIRT - 프로세스가 사용하는 가상메모리의 총량, RES - 프로세스가 사용하는

물리적 메모리의 양, SHR - 다른 프로세스와 공유하는 메모리의 양을 뜻한다. top 명령을 이용해

메모리를 많이 차지하는 문제있는 프로세스를 찾을 수 있다.

<프로세스를 중단시키기>

kill 3940 kill -s HUP 3940 
# http로 시작하는 모든 프로세스 끝
killall http*

디스크 공간 모니터링

<미디어 마운트>

CD-ROM이나 USB 처럼 이동식 미디어를 마운트하고 언마운트하기 위해 필요한 명령들이 존재한다.

# 현재 시스템에 마운트 된 미디어 장치의 목록을 표시 
mount 
# 이동식 미디어 장치를 제거 
unmount [directory | device]

<df, du 명령 사용하기>

df 명령을 사용해서 장치의 위치 및 저장가능한 데이터의 양과 사용중인 데이터의 양을 볼 수 있다.

du 명령은 특정 디렉토리의 디스크 사용량을 보여준다.

데이터 파일 작업하기

<데이터 정렬>

 
# line-by-line ASCII 정렬
sort file1
# 숫자 정렬
sort -n file2
# 타임스탬프 정렬
sort -n file3
# 월별로 정렬
sort -M file3
# ':' 구분자로 3번째 인수에 대해 정렬
sort -t ':' -k 3 -n /etc/passwd
# 용량 많이 차지하는 순서대로 정렬
du -sh * | sort -nr

<데이터 검색>

grep 명령을 사용하여 특정 패턴이 포함된 특정한 줄을 검색할 수 있다.

grep [option] pattern [file]

# 역검색
grep -v t file1
# 줄 번호까지
grep -n t file1
# 패턴과 일치하는 내용을 포함한 줄이 몇 개나 되는지?
grep -c t file1
# 일치하는 내용을 찾으려는 패턴이 둘 이상
grep -e t -e f file1 
# 위와 동일하지만 정규표현식 사용
grep [tf] file1

<데이터 압축>

리눅스에는 여러 파일 압축 유틸리티가 존재하지만 가장 많이 쓰이는 유틸리티는 gzip이다.
파일 압축을 위한 gzip, 압축된 텍스트 파일의 내용을 출력하는 gzcat, 압축 파일을 푸는 gunzip이 있다.

<데이터 아카이브>

유닉스/리눅스 시스템에서 가장 인기 있는 아카이브 도구는 tar 명령이다.

tar 기능 [옵션] 대상1 대상2 ...

# test1, test2 디렉토리를 test.tar로 압축
tar -cvf test.tar test1/ test2/
# 출력
tar -tf test.tar
# 내용 추출
tar -xvf test.tar