※ 요약

리눅스 명령어 lsof는 현재 사용중인 파일들의 목록과 함께 해당 파일의 소유자, 관련 프로세스, 크기, 타입 등의 정보를 출력해주는 명령어다. 


※ 경로

/usr/sbin/lsof


※ 사용법

lsof [옵션]... [파일]...


※ 옵션

 옵션

 설명

 -a

 파일을 선택하는데 AND 연산으로 대상을 출력

 -c

 지정한 COMMAND 필드만 출력

 -F

 지정한 구분자로 필드를 구분하여 출력

 -g

 지정한 그룹 아이디를 사용하는 관련 프로세스를 출력

 -i

 현재 사용되는 소켓 정보를 출력

 -l

 로그인 사용자명 대신에 UID를 출력

 -n

 호스트명 대신에 IP주소를 출력

 -P

 포트 서비스명 대신에 포트 번호를 출력

 -r

 지정한 초의 주기로 반복해서 출력 (디폴트 값은 15초)

 -s

 파일의 크기를 출력

 -V

 보다 상세한 정보를 출력



※ 사용예

lsof의 사용 예제다. 먼저 -c mysql 옵션을 주어 mysql 관련 필드만 출력하도록 해봤는데, 생각보다 꽤 많았다.


아래 예제는 -iTCP 옵션을 주어 TCP 관련 소켓 정보를 출력하는 예제다. 모두 알겠지만 UDP를 보려면 당연히 -iUDP를 하면 된다.


※ 요약

리눅스 명령어 file은 파일의 종류 확인 및 파일 속성 값을 확인할때 사용하는 명령어다. 주로 acsii나 text, date와 같은 파일 속성을 출력하는데, /usr/share/magic이나 /usr/lib/magic에 저장한 파일 정보를 참고하여 파일 속성을 출력한다. 필자 생각에 이 명령어는 중요도도 낮고 사용 빈도도 낮을거 같으므로 이런 명령어도 있구나 하고 넘어가면 될것이다.


※ 경로

/usr/bin/file


※ 사용법

file [옵션]... filename



※ 옵션

 옵션

 Long옵션

 설명

 -b

--brief 

 지정한 파일명은 출력하지 않고 파일의 유형만 출력

 -f

 --file-from 파일목록

 파일목록에서 지정한 파일들에 대해서만 명령을 실행

 -i

 --mime

 MIME 타입 문자로 출력

 (예로 ascii text를 text/plain; charset=us-ascii 형태로 출력)

 -L

 --dereference

 심볼릭 링크된 파일을 추적하여 원본 파일 정보를 출력

 -m

 --magic-file 매직파일

 임의로 매직파일을 지정(디폴트 값은 /usr/share/file/magic)

 -z

 --uncompress

 압축된 파일의 내용을 출력

 -v

 --version

 버전 정보를 출력

 

 --help

 사용법 출력


※ 사용예

아래는 필자가 임대 받은 카페24 가상서버에 접속한 화면이고, 임의로 몇 가지 파일 및 디렉토리들에 대해서 명령어를 실행해봤다. 설명은 따로 안해도 될듯 싶다.


※ 요약

리눅스 명령어 logger는 /var/log/message 파일에 원하는 메시지(로그)를 기록할 수 있는 명령어다. 필자는 이 명령어가 익숙하지 않아서 거의 사용안하지만 습관적으로 사용하면 꽤 유용할거 같다.


※ 경로

/usr/bin/logger


※ 사용법

logger [옵션]... [메시지]...


※ 옵션

 옵션

 설명

 -i

 각각의 라인마다 logger의 프로세스 ID를 기록

 -s

 시스템 로그뿐만 아니라 표준 출력으로도 메시지를 기록

 -f file

 지정한 file에 로그를 기록

 -p pri

 pri(우선순위)를 메시지와 함께 기록, 기본값은 user.notice

 -t tag

 tag를 각각의 라인마다 기록 (검색시 유용할듯 싶다.)



※ 사용예

아래는 logger 명령어 사용예인데, root 계정이 아니다보니 sudo를 이용했다. 간단한 예제이므로 따로 설명은 하지 않겠다.



※ 요약

리눅스 명령어 lastlog는 /var/log/lastlog 로그 파일의 정보를 분석하여 출력하는 명령어다. 이 파일을 통해 사용자의 마지막 로그인 시간, 호스트명, 포트 등을 볼 수 있다. 


※ 경로

/usr/bin/lastlog


※ 사용법

lastlog [옵션]...


※ 옵션

 옵션

 Long옵션

 설명

 -t DAYS

 --time DAYS

 지정한 날짜 단위(DAYS) 기간에 로그인한 정보만 출력

 -u LOGIN

 --user LOGIN

 지정한 로그인명(LOGIN)의 lastlog 정보만 출력

 -h

 --help

 lastlog 명령어 사용법 출력


※ 사용예

아래는 필자의 시스템에서 lastlog 명령어를 실행한 화면이다. 보면 알겠지만 root 계정 말고는 로그인한 적이 없다.



-u 옵션으로 특정 계정의 정보만 출력하였다.


-t 15 옵션으로 15일 내의 정보만 출력했다.


※ 관련 명령어

last : 로그인과 재부팅 로그 확인

lastb : 접속 실패 기록 보기

who : 호스트에 로그인한 사용자 정보 출력

logger : 시스템 로그 기록

logrotate : 로그 파일 관리

grep : 패턴에 매치되는 문자열 검색


※ 요약

리눅스 명령어 lastb는 접속 실패 기록을 보여주는 명령어다. last 명령어가 로그인 기록과 재부팅 기록을 보기 위해 /var/log/wtmp 파일을 열람한다면, lastb는 /var/log/btmp 파일을 열람하여 실패 목록을 보여준다. lastb는 접속 실패를 기록하는 파일인 btmp 파일을 열람한다는 것을 제외하고는 last 명령어와 같다.


※ 경로

/usr/bin/lastb


※ 사용법

lastb [옵션]... [유저명]... [tty]...


※ 옵션

 옵션

 설명

 -num

 num 만큼의 줄만 출력

 -n num

 -num과 동일

 -R

 hostname필드는 출력 안 함

 -a

 출력되는 목록에서 hostname 필드는 마지막에 출력

 -d

 다른 host에서 접속한 내용만 출력

 -x

 shutdown 상태 및 runlevel이 바뀐 상태 출력

 -f file

 지정한 file에서 정보를 읽어와서 출력



※ 사용예

아래는 lastb의 간단한 사용 화면이다. 필자의 시스템에는 로그인 실패 기록이 없어 일부러 만든뒤 실패 로그를 출력하였다.


※ 관련 명령어

last : 로그인과 재부팅 로그 확인

lastlog : 접속 로그 보기

logger : 시스템 로그 기록

logrotate : 로그 파일 관리

grep : 패턴에 매치되는 문자열 검색


※ 요약

리눅스 명령어 last는 로그인과 재부팅 로그를 출력하는 명령어다. 로그 파일은 /var/log/wtmp 파일에 위치하며 시스템의 부팅부터 현재까지의 모든 유저의 로그인과 로그아웃에 대한 정보를 가지고 있는데, 이 파일의 내용을 last 명령어가 보여준다. 참고로 lastb 명령어는 /var/log/btmp 로그 파일을 보여주는 명령어로써, 어느 파일을 오픈하는지만 다르고 나머지는 똑같다고 보면 된다. 어렵지 않은 명령어이므로 금방 익힐 수 있으며 


※ 경로

/usr/bin/last


※ 사용법

last [옵션]... [유저명]... [tty]...


※ 옵션

 옵션

 설명

 -num

 num 만큼의 줄만 출력

 -n num

 -num과 동일

 -R

 hostname필드는 출력 안 함

 -a

 출력되는 목록에서 hostname 필드는 마지막에 출력

 -d

 다른 host에서 접속한 내용만 출력

 -x

 shutdown 상태 및 runlevel이 바뀐 상태 출력

 -f file

 지정한 file에서 정보를 읽어와서 출력



※ 사용예

아래는 last 명령어를 실행한 모습이다. 필자는 주로 root 계정으로 로그인한걸 알 수 있다. 재부팅은 reboot이라고 표기되어 있는 것도 볼 수 있다. 모자이크 처리한 부분은 hostname(ip주소)이다.


라인이 너무 많아 최근 10라인만 보기 위해 -10 옵션을 주었다.


grep 명령어를 이용하여 reboot 기록만 출력한 모습이다. 응용하면 특정 계정만 로그인한 것도 찾을 수 있을 것이다. -R 옵션을 준 이유는 모자이크 하기 귀찮기 때문이다. 마지막으로 아래 26+23:25의 의미는 시스템이 종료하기 전까지 시스템이 켜져 있던 시간을 의미한다. 즉 26일 하고도 23시간 25분 켜져 있었다는 의미다. 91+13:05는 말 안해도 알거라 믿는다.


※ 관련 명령어

lastb : 접속 실패 기록 보기

lastlog : 접속 로그 보기

logger : 시스템 로그 기록

logrotate : 로그 파일 관리

grep : 패턴에 매치되는 문자열 검색


※ 요약

리눅스 명령어 pstree는 프로세스의 상관관계(부모-자식 관계)를 트리 형태로 출력해주는 명령어로써, 관계를 트리 형태로 출력해주므로 계층 관계를 한 눈에 파악할 수 있다.


※ 경로

/usr/bin/pstree


※ 사용법

pstree [옵션]... [pid|user]


※ 옵션

옵션

 설명

 -a

 지정한 인수까지 출력

 -c

 중복된 프로세스도 모두 출력, 디폴트 값은 트리 내의 동일한 프로세스를 하나의 프로세스로 출력하고 중복된 개수를 출력함

 -G

 VT100 형태의 트리로 출력

 -h

 현재 프로세스와 부모 프로세스를 하이라이트 형태로 출력

 -H pid

 지정한 pid(프로세스ID)의 프로세스와 부모 프로세스를 하이라이트 형태로 출력

 -l

 긴 라인을 모두 출력

 -n

 pid를 기준으로 정렬하여 출력

 -p

 pid도 출력

 -u

 uid도 출력

 -U

 UTF-8(유니코드) 형태로 출력

 -V

 pstree의 버전 정보를 출력


※ 사용예

아무 옵션없이 pstree만 실행한 모습이다. 아래 출력된 내용을 보면 모든 프로세스는 init에서 파생된 자식 프로세스들이라는 것을 알 수 있다.



옵션 a와 p를 입력한 모습이다. 옵션 p로 인해 pid도 함께 출력된 모습이다.


※ 관련 명령어


※ 요약

리눅스 명령어 pmap은 프로세스ID를 기준으로 메모리 맵 정보를 출력한다.


※ 경로

/usr/bin/pmap


※ 사용법

pmap [옵션]... pid [...]


※ 옵션

 옵션

 Long옵션

 설명

 -x

 --extended

 확장된 포맷으로 출력

 -d

 --device

 디바이스 포맷을 출력

 -q

 --quiet

 정보를 간단하게 출력

 -V

 --version

 버전 정보를 출력



※ 사용예

예제니까 임의 프로세스의 메모리 맵 정보를 보도록 하겠다. 아래는 ps 명령어로 pid를 확인한후, pmap을 이용하여 해당 프로세스의 메모리 맵을 본 화면이다.


아래는 -x 옵션을 줘서 Address, Kbytes, RSS.. 등의 필드들도 출력한 화면이다.


※ 관련 명령어

ps : 프로세스들의 현재 상태를 출력

pgrep : 이름을 기반으로 프로세스를 찾음

pidof : 프로세스 ID 확인


※ 요약

리눅스 명령어 pidof는 실행중인 프로그램의 프로세스 ID를 찾을때 사용하는 명령어다.


※ 경로

/sbin/pidof


※ 사용법

pidof [옵션]... 프로그램명


※ 옵션

 옵션

 Long옵션

 설명

 -s

 

 중복되는 프로세스 ID가 있을 경우 하나의 프로세스 ID만 출력

 -x

 

 스크립트와 함께 실행중인 프로세스 ID도 힘께 출력

 -o pids

 

 지정한 프로세스(pids)를 제외하고 나머지를 출력



※ 사용예

필자는 vi를 실행한 상태이고, 이 vi의 프로세스 id를 확인하고자 아래와 같이 명령어를 입력하여 vi의 pid를 확인하는 모습이다.


※ 관련 명령어

ps : 프로세스 상태 보기

nice : 프로세스 우선순위 변경


※ 요약

리눅스 명령어 runlevel은 이전 실행 레벨과 현재의 실행 레벨을 출력하는 명령어다. 값을 출력할때는 공백 문자로 구분하여 출력하는데, 좌측이 이전 실행 레벨, 우측이 현재 실행 레벨이다. 만약 이전 실행 레벨이 없다면 N을 출력한다. runlevel 명령은 System-V의 who -r 명령을 대신해서 rc 스크립트 안에서 사용될 수 있다. 또한, init의 새로운 버전에서 이 정보들은 RUNLEVEL과 PREVLEVEL 환경변수를 지정하는데 사용되어 질 수 있다.


※ 경로

/sbin/runlevel


※ 사용법

# runlevel


※ runlevel 설명

아래 내용은 /etc/inittab 파일에 있다.

0 - halt (Do NOT set initdefault to this)

1 - Single user mode

2 - Multiuser, without NFS (The same as 3, if you do not have networking)

3 - Full multiuser mode

4 - unused

5 - X11

6 - reboot (Do NOT set initdefault to this)




※ 사용예

터미널에 runlevel을 입력한 화면이다.


+ Recent posts