728x90

lsof(LiSt Open File)
 개요
 현재 System에서 돌아가는 모든 Process에 의해서 Open 된 파일들에 대한 정보를 보여준다.
 리눅스와 유닉스는 추상화된 파일 시스템(VFS - Virtual File System)을 사용하므로 네트워크 소켓, 라이브러리등 모두 파일로 처리되므로 lsof를 통해 상세한 정보를 확인 할 수 있음.

 항목 설명
  COMMAND : 현재 실행되고 있는 명령어
  PID : 프로세스 ID
  USER : 실행한 사용자
  FD : File Descriptor

  FD 값
    cwd : current working directory
    rtd : root directory
    mem : memory-mapped file
    txt : program text
    r : read access
    w : write access
    u : read and write access

  TYPE : 파일 종류

  Type 값
    DIR : 디렉토리
    CHR : character special file
    FIFO : 선입선출
    REG : 일반파일
    unix : 유닉스 도메인 소켓(TCP/UDP 보다 속도가 빠름)

  DEVICE : 장치 번호
  SIZE/OFF : 파일의 크기나 오프셋
  NODE : 노드 번호
  NAME : 파일명

 Options
 -c : 해당 명령어가 사용하고 있는 파일들에 대해서 출력한다.
 -t : 현재 동작되고 있는 프로세서의 PID를 출력한다.
 -p : 해당 pid가 참조하고 있는 프로그램과 파일들을 출력
 -i : 현재 열려있는 소켓들에 대해서 출력한다.
 +D : 특정 디렉토리 이하의 열려있는 파일들에 대해서 출력한다.
 
 ex)lsof [-option] 값
    특정 포트 사용 조회 > lsof -i TCP:[PORT number]

#/usr/local/bin/lsof -i TCP:11736
COMMAND   PID  USER   FD   TYPE             DEVICE  SIZE/OFF NODE NAME
java    14121 jeus  136u  IPv4 0xe0000005f8f0ad00     0t917  TCP 127.0.0.1:30044->127.0.0.1:11736 (ESTABLISHED)
java    14395 jeus  113u  IPv4 0xe00000054a97c980       0t0  TCP *:11736 (LISTEN)


    특정 PID 사용 조회 > lsof -p [PID]

#/usr/local/bin/lsof -p 8791     
COMMAND  PID  USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
java    8791 jeus  cwd    DIR           2,0x3a99     1024        31 /logs/jeus/dump
java    8791 jeus  txt    REG             64,0x3   150676    197133 /opt/java6/jre/bin/IA64N/java
java    8791 jeus  mem    REG             64,0x3   411676     26289 /usr/lib/nls/loc/hpux32/locales.3/ko_KR.eucKR
java    8791 jeus    0r  FIFO 0xe0000003ea675a88      0t0 123437066 
java    8791 jeus    6u  unix             64,0x3      0t0    189233 /var/spool/sockets/pwgr/client8791 (0x1508e680)
java    8791 jeus  107u   CHR              192,0      0t0       174 /dev/random
java    8791 jeus  115u  IPv4 0xe00000054ba85100      0t0       TCP *:11861 (LISTEN)
java    8791 jeus  118u  IPv4 0xe00000045a464100  0t10042       TCP 127.0.0.1:28859->127.0.0.1:11736 (ESTABLISHED)


    특정 디렉토리 이하의 열린 파일 조회 > lsof +D [디렉토리]

#/usr/local/bin/lsof +D /src/web/WEB-INF/lib
COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF     NODE NAME
java    20808 jeus  142u   REG 2,0x3a98   621839  2777605 /src/web/WEB-INF/lib/BarCode.jar
java    20808 jeus  143u   REG 2,0x3a98     1455  2777871 /src/web/WEB-INF/lib/CardDes.jar
java    20808 jeus  144u   REG 2,0x3a98     8566  2777894 /src/web/WEB-INF/lib/CertVerifierClient_v2.1.1.jar
java    20808 jeus  145u   REG 2,0x3a98    25441  2778032 /src/web/WEB-INF/lib/D3SocketClient.jar


    특정 명령어가 사용하는 파일 조회 > lsof -c [명령어]

#/usr/local/bin/lsof -c tail
COMMAND   PID  USER   FD   TYPE   DEVICE  SIZE/OFF   NODE NAME
tail    22378 jeus  cwd    DIR 2,0x3a99      5120  11323 /logs/online-log/
tail    22378 jeus  txt    REG   64,0x3     74900    296 /usr/bin/tail
tail    22378 jeus  mem    REG   64,0x3    411676  26289 /usr/lib/nls/loc/hpux32/locales.3/ko_KR.eucKR
tail    22378 jeus  mem    REG   64,0x3   5094520  58648 /usr/lib/hpux32/libc.so.1
tail    22378 jeus  mem    REG   64,0x3     86960  26399 /usr/lib/nls/loc/hpux32/methods.1/libHP15.so
tail    22378 jeus  mem    REG   64,0x3    191436 209651 /usr/lib/hpux32/uld.so
tail    22378 jeus  mem    REG   64,0x3     76736 209649 /usr/lib/hpux32/libdl.so.1
tail    22378 jeus  mem    REG   64,0x3   1170536 209648 /usr/lib/hpux32/dld.so
tail    22378 jeus    0u   REG 2,0x3a99   5633482  80738 /logs/online-log/2018debug.log
tail    22378 jeus    1u   STR  157,0x7 0t9456571    807 /dev/pts/7->ldterm->ptem->pts
tail    22378 jeus    2u   STR  157,0x7 0t9456571    807 /dev/pts/7->ldterm->ptem->pts
tail    22378 jeus    3r   REG   64,0x3       661  24497 /usr/lib/nls/msg/ko_KR.eucKR/tail.cat


    TCP 포트 11736번을 사용하는 PID 리스트 조회  > lsof -t -i TCP:11736

#/usr/local/bin/lsof -t -i TCP:11736
11726
14121
14395
14448


    lsof를 이용한 특정 user의 프로세스 강제 종료 > kill -9 `lsof -t -u [유저명]`

 

728x90

'IT > OS (Unix Linux Windows)' 카테고리의 다른 글

[명령어]touch  (0) 2018.10.30
[명령어]파일시스템 관련 df / du  (0) 2018.10.30
[명령어]압축관련 tar / gzip  (0) 2018.10.30
[명령어]netstat  (0) 2018.10.24
정규표현식의 사용(작성중)  (0) 2018.10.17
728x90

netstat
 개요
 TCP/IP 프로토콜 진단 시 사용

 결과에 대한 항목 설명
  Proto : 현재 사용한 프로토콜 종류
 Recv-Q : 원격 응용 프로그램으로부터 수신하여 버퍼에 저장한 데이터의 양
 Send-Q : 원격 응용 프로그램으로부터 전송하기 위하여 송신 버퍼에 저장한 데이터의 양
  Local Address : 현재 열려 있는 사용자 컴퓨터의 IP/호스트 네임과 사용중인 포트
  Foreign Address : 현재 사용자의 컴퓨터에 접속되어 있는 IP/호스트 네임과 사용중인 포트
  State : 연결상태

  State 값
    LISTEN : 연결을 위하여 접속을 기다리는 상태
    SYN_SENT : 클라이언트 프로그램이 원격 호스트에 연결을 요청한 상태
    SYN_RECV : 서버가 클라이언트 프로그램으로부터 연결요청을 받아 클라이언트에 응답을 하였지만 아직 클라이언트의 확인 메시지를 받지 않은 상태
    ESTABLISHED : 현재 연결되어 있는 상태
    FIN_WAIT1 : 한쪽 응용 프로그램이 연결 종료를 요청한 상태
    CLOSE_WAIT : 연결 종료 메시지를 수신하고 그에 대한 확인 메시지를 보낸 상태
    FIN_WAIT2 : 로컬에서 종결 메시지를 전송하였고 원격 호스트로부터 이에 대한 확인 메시지를 수신하였지만, 원격 응용 프로그램이 작업을 종료하지 않아 원격 호스트의 종결 메시지를 기다리는 상태
    LAST_ACK : 원격으로부터 종결 요청을 받고 로컬에서도 회선 종결에 합의한 상태
    TIME_WAIT : 연결은 종료되었지만 마지막 조욜 확인 메시지를 재전송할 경우를 감안하여 당분간 소켓정보를 유지하고 있는 상태
    CLOSED : 완전히 연결이 종료된 상태

 Options
  -a : 모든 연결 및 수신 대기 포트를 표시합니다.
  -b : 각 연결 또는 수신 대기 포트를 만드는 데 관련된 실행 프로그램을 표시합니다. 
  -e : 이더넷 통계를 표시합니다. 이 옵션은 -s 옵션과 같이 사용될 수 있습니다.
  -n : 주소 및 포트 번호를 숫자 형식으로 표시합니다.
  -o : 각 연결의 소유자 프로세스 ID를 표시합니다.
  -p : 프로토콜 지정한 프로토콜에 해당되는 연결을 표시합니다.
  -r : 라우팅 테이블을 표시합니다.
  -s : 각 네트워크 프로토콜(IP, TCP, UDP, ICMP)에 대한 통계 정보를 출력합니다.

 ex)netstat [-option]
   열려있는 모든 포트

$ netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp        0      0  127.0.0.1.49473    127.0.0.1.13901     ESTABLISHED
tcp        0      0  127.0.0.1.13901       *.*                   LISTEN

728x90

'IT > OS (Unix Linux Windows)' 카테고리의 다른 글

[명령어]touch  (0) 2018.10.30
[명령어]파일시스템 관련 df / du  (0) 2018.10.30
[명령어]압축관련 tar / gzip  (0) 2018.10.30
[명령어]lsof  (0) 2018.10.24
정규표현식의 사용(작성중)  (0) 2018.10.17
728x90

정규표현식이란 우리가 Unix/Linux 환경에서 힘들지 않고 편하게 사용하려면 꼭 숙지해야 하는 내용이다.


이걸 모르면 손이 고생하는 수 밖에 없다.


정규표현식
  • vi, ex, grep, egrep, sed, awk 등의 모든 버전에서 사용 가능
메타문자기능사용 예사용 예 설명
^ 행의 시작 지시자 /^love/ love로 시작하는 모든 행과 대응
$ 행의 끝 지시자 /love$/ love로 끝나는 모든 행과 대응
. 하나의 문자와 대응 /l..e/ l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
* 선행 문자와 같은 문자의 0개 혹은 임의개수와 대응 /*love/ 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응
[] [] 사이의 문자 집합 중 하나와 대응 /[Ll]ove/ Love나 love를 포함하는 행과 대응
[x-y] [] 사이의 문자범위내에의 한 문자와 대응 [A-Z]ove/ A부터 Z까지 한 문자가 ove로 끝나는 경우와 대응 
[^ ] 문자집합에 속하지 않는 한 문자와 대응 /[^A-Z]/ A와 Z 사이의 범위에 포함되지 않는 한  문자와 대응
\ 메타문자로 사용하고 싶지 않은 경우 /love\./ love가 마침표(.)로 끝나는 경우와 대응.
 일반적으로 .는 임의의 한 문자를 의미

\<

 단어의 시작 지시자

 /\<love

 love로 시작하는 단어를 포함하는 행과 대응

\>

 단어의 끝 지시자

 /love\>/

 love로 끝나는 단어를 포함하는 행과 대응
\(..\) 다음 사용을 위해 태그를 붙인다.

/\(lov\)able\1er/

 9개 태그를 쓸 수 있다.



728x90

'IT > OS (Unix Linux Windows)' 카테고리의 다른 글

[명령어]touch  (0) 2018.10.30
[명령어]파일시스템 관련 df / du  (0) 2018.10.30
[명령어]압축관련 tar / gzip  (0) 2018.10.30
[명령어]lsof  (0) 2018.10.24
[명령어]netstat  (0) 2018.10.24

+ Recent posts