728x90
개요
 WAS의 2중화 구성 환경에서 WAS1과 WAS2가 세션을 공유하지 못하는 현상이 발생

현상
 WAS의 2중화 구성 환경에서 이미지 업로드 하는 거래의 Flow를 진행 시 세션 공유가 되지 않음.
 이미지 업로드 거래 Flow
  1. 뷰어를 띄우는 부분 (WAS1 서버로 연결)
  2. 뷰어에서 ActiveX 에디터를 띄우는 부분 (WAS1 서버로 연결)
  3. ActiveX 에서 이미지 저장을 시작하는 부분 (WAS1 서버로 연결)
   3.1 StartUp (WAS2 서버로 연결)
   3.2 Update (WAS1 서버로 연결)
   3.3 Complete (WAS2 서버로 연결)
    ※ 위 3.1~3 부분은 세션상에서 받아온 userid를 파라매터로 처리
 3의 3.1 부터 세션 정보를 잃어버림.

원인
 이미지 업로드 거래를 처리하는 WAS(JEUS6)의 session-timeout 설정이 0으로 설정되었을 경우,
 JEUS6에서 세션서버를 사용 시 세션 정보를 자체적으로 삭제를 해버림.
 따라서 세션 공유가 불가능한 상황.

해결방안
 session-timeout 을 명시적으로 0이외의 시간으로 설정
 session-timeout은 web.xml에서 설정 가능

        <session-config>
            <session-timeout>180</session-timeout>
        </session-config>

 ※JEUS6의 session-timeout 적용 우선 순위
  1. web.xml
  2. $JEUS_CONFIG/servlet/webcommon.xml

 
728x90
728x90

java 관련 명령어

HP-UX java 버전 분별법
IA64N - 32bit
IA64W - 64bit 

jinfo
 개요
 JVM option(java command option)을 확인

  java command option
    -X는 표준이 아닌 설정으로 Macro한 측면에서 JVM제어 기능을 제공 (모든 JVM에서 지원한다는 보장이 없음)
   -XX는 표준이 아닌 설정으로 안정적이지 않은 옵션. (-X Option보다 세밀한 제어 기능을 제공하며, 성능 튜닝/버그 Workaround를 위해서 주로 사용됨)
    -XX:+<옵션>은 해당 옵션을 활성화 -XX:-<옵션>은 해당 옵션을 비활성화
    -XX:<옵션>=<숫자> 시 'm','M'은 메가바이트 'k','K'는 킬로바이트 'g','G'는 기가바이트를 표현

 UNIX/Linux/Windows JAVA 5 이상 제공.
 Heap, PermSize 등 옵션지정 없는 프로세스에 대해 default값 확인 가능.
 HP-UX에서는 -flag 필수, Linux에서는 -flag없이 pid만 포함하면 해당 프로세스 JVM 전체 정보 출력.

 ex) jinfo -flag [JVMflag] [pid]
     5555라는 pid의 PermSize를 출력하라
   

$ jinfo -flag PermSize 5555
-XX:PermSize=134217728


jstat
 개요
 JVM 측정을 위한 성능 통계를 표시한다.

 항목 설명
  Timestamp : JVM의 시작 시간 이후의 시간
  S0 : Survivor0의 사용률
  S1 : Survivor0의 사용률
  E : Eden 영역의 사용률
  O : Old 영역의 사용률
  P : Permanent 영역의 사용률
  YGC : Young generation의 GC 이벤트 수
  YGCT : Young generation의 가비지 컬렉션 시간
  FGC : Full GC 이벤트 수
  FGCT : Full의 가비지 컬렉션 시간
  GCT : 가비지 콜렉션 시간

  Options
 -class : 클래스로드의 동작에 대한 통계
 -compiler : 핫스팟 컴파일러의 동작의 통계를 표시
  -gc : 가비지 콜렉트된 힙 영역에 대한 통계
 -gccapacity : Generation과 해당 공간의 용량 통계
 -gcutil : 가비지 콜렉션 통계 요약

  OutputOptions
 -h [n] : 칼럼 머리글마다 n개의 출력 행 표시 
 -t : 출력되는 첫번째 칼럼에 타임스탬프 표시 (타임스탬프는 JVM의 시작 시간 이후의 시간이다.)

 ex) jstat -options -outputoptions [pid] [interval] [count]
     22820의 pid에 10초(10000ms)간격으로 100개의 샘플을 취득해 -gcutil 옵션에 따라 출력하라(단 5개 출력 마다 머리글 표시 첫 번째 칼럼엔 타임스탬프를 표시)

$ jstat -gcutil -h 5 -t 22820 10000 100
Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
      1239777.3  32.23   0.00  98.88   1.54  13.76    430  100.417     0    0.000  100.417
      1239787.3  32.23   0.00  99.24   1.54  13.76    430  100.417     0    0.000  100.417
      1239797.3   0.00  36.26  19.20   1.54  13.76    431  100.490     0    0.000  100.490
      1239807.4   0.00  36.26  38.71   1.54  13.76    431  100.490     0    0.000  100.490
      1239817.4  29.82   0.00  15.43   1.54  13.76    432  100.722     0    0.000  100.722
Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
      1239827.4  29.82   0.00  34.67   1.54  13.76    432  100.722     0    0.000  100.722
      1239837.4  29.82   0.00  35.03   1.54  13.76    432  100.722     0    0.000  100.722


 2행과 3행을 보면 Minor gc가 발생하여 Eden 영역이 감소하고 YGC와 YGCT가 증가함을 볼 수 있다.

jstack
 개요
 java Thread dump 생성해주는 명령어로 java stack 확인할 때 사용.
 ※Unix/Linux 는 Java 5 부터 Windows 는 Java 6 부터 지원
   Unix/Linux 에서는 kill -3 명령어로도 Thread dump 생성 가능

 ex) jstack -l [JVM pid]
     4740이라는 pid에 대한 Thread dump를 td_4740.txt 라는 파일로 생성하라

$ jstack -l 4740 > td_4740.txt


jmap
 개요
 java Heap dump 생성해주는 명령어로 java Heap을 확인할 때 사용.

 Options
 -histo : 클래스별 객체 수와 메모리 사용량 확인
 -dump : heap dump 생성

 ex) jmap [-Options] [JVM pid]
     4740이라는 pid에 대한 Heap dump를 hd_4740.bin 라는 파일로 생성하라

$ jmap -dump:format=b,file=hd_4740.bin 4740


     24760이라는 pid에 대한 클래스별 객체 수와 메모리 사용량을 확인하라

$ jmap -histo:live 24760 | more
 num     #instances         #bytes  class name
----------------------------------------------
   1:        327969       19974168  [C
   2:        112277       15139136  <constMethodKlass>
   3:        112277        9886040  <methodKlass>
   4:        330181        7924344  java.lang.String
   5:        176627        7783016  <symbolKlass>
   6:         10189        6167032  <constantPoolKlass>
   7:         97618        4685664  com.sun.tools.javac.zip.ZipFileIndexEntry
   8:         10189        4531304  <instanceKlassKlass>
   9:         46349        3980768  [Ljava.util.HashMap$Entry;
  10:          8970        3606368  <constantPoolCacheKlass>



 

728x90

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

[OCSP]기관 장애 발생 이후 기관 조치가 되었으나 ocsp 오류 발생  (0) 2018.11.12
[UNIX]DNS Looping  (0) 2018.11.08
[명령어]basename / dirname  (0) 2018.11.02
[명령어]ln  (0) 2018.10.30
[명령어]split  (0) 2018.10.30
728x90

절대경로에서 파일 및 파일경로만 추출하기

 ex) basename [절대경로]
     절대경로에서 파일의 이름을 출력해라

$ basename /shome/i8/test/123
123


 ex) dirname [절대경로]
     절대경로에서 해당파일의 디렉토리 경로를 출력해라 

$ dirname /shome/i8/test/123
/shome/i8/test


728x90

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

[UNIX]DNS Looping  (0) 2018.11.08
[java 관련 명령어] jinfo / jstat / jstack / jmap  (0) 2018.11.06
[명령어]ln  (0) 2018.10.30
[명령어]split  (0) 2018.10.30
[명령어]find  (0) 2018.10.30
728x90

ln
 개요
 링크파일을 만드는 명령어
 심볼릭 링크와 하드 링크의 개념을 알고 사용해야 한다.

 심볼릭 링크
 윈도우즈의 '바로가기'라고 생각하면 된다.
 원본파일을 가리키고만 있으므로 원본파일과는 무관하다.
 즉 심볼릭 링크 파일을 지우더라도 원본파일은 지워지지 않는다.

 하드 링크
 원본파일과 다른 이름으로 존재하는 동일한 파일이며 원본파일과 동일한 내용의 다른 파일이라고 볼 수 있다.
 따라서 하드 링크 파일을 지우더라도 원본파일을 지워지지 않는다.
 하지만 원본파일의 내용이 바뀔경우에는 링크파일의 내용도 바뀌게 된다.

 Options
 -s : 심볼릭 링크 생성

 ex) ln [-option] [원본파일] [대상파일]
     "test"라는 파일에 대한 하드링크 파일 "abc"를 생성하라 

$ ln test abc


     "tmp"라는 디렉토리에 대한 심볼릭 링크 "/var/abc"를 생성하라

$ ln -s /tmp /var/abc

lrwxr-xr-x   1 i48   if              5 Oct 30 19:15 /var/abc -> /tmp
728x90

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

[java 관련 명령어] jinfo / jstat / jstack / jmap  (0) 2018.11.06
[명령어]basename / dirname  (0) 2018.11.02
[명령어]split  (0) 2018.10.30
[명령어]find  (0) 2018.10.30
[명령어]touch  (0) 2018.10.30
728x90

split
 개요
 큰 파일을 여러 작은 파일로 나눌때 사용.

 Options
 -a : 분할되는 파일뒤에 붙는 접두어의 길이
 -b : 분할되는 기준을 바이트로 분할 (라인 중간에 내용이 잘릴 수 있음)
  -C : 분할되는 기준을 바이트로 분할 (라인 기준 내용을 잘리지 않음)
 -d : 분할되는 파일뒤에 붙는 접두어가 영문이 아닌 숫자로 지정
 -l : 분할되는 기준을 라인수로 분할

 ex)split [-option] [값] [대상파일]
     50MB 단위로 test.txt 파일을 짤라라.

$ split -b 50m test.txt


     test라는 파일을 "test_"로 시작되는 파일로 짤라라.

$ split test test_
$ ll
total 4916
-rw-r--r--   1 in8   if        1254527 Oct 30 17:10 test
-rw-r--r--   1 in8   if          79782 Oct 30 17:10 test_aa
-rw-r--r--   1 in8   if          87920 Oct 30 17:10 test_ab
-rw-r--r--   1 in8   if          79254 Oct 30 17:10 test_ac
-rw-r--r--   1 in8   if          94671 Oct 30 17:10 test_ad
-rw-r--r--   1 in8   if          94174 Oct 30 17:10 test_ae
-rw-r--r--   1 in8   if          90584 Oct 30 17:10 test_af
-rw-r--r--   1 in8   if          82640 Oct 30 17:10 test_ag
-rw-r--r--   1 in8   if          89124 Oct 30 17:10 test_ah
-rw-r--r--   1 in8   if          76908 Oct 30 17:10 test_ai
-rw-r--r--   1 in8   if          77784 Oct 30 17:10 test_aj
-rw-r--r--   1 in8   if          83850 Oct 30 17:10 test_ak
-rw-r--r--   1 in8   if          81390 Oct 30 17:10 test_al
-rw-r--r--   1 in8   if          86587 Oct 30 17:10 test_am
-rw-r--r--   1 in8   if          89396 Oct 30 17:10 test_an
-rw-r--r--   1 in8   if          60463 Oct 30 17:10 test_ao


     test라는 파일을 "test_"로 시작되면서 접두어가 4글자가 들어가는 파일로 짤라라.

$ split -a 4 test test_
$ ll
total 4916
-rw-r--r--   1 i8   if        1254527 Oct 30 17:10 test
-rw-r--r--   1 i8   if          79782 Oct 30 17:11 test_aaaa
-rw-r--r--   1 i8   if          87920 Oct 30 17:11 test_aaab
-rw-r--r--   1 i8   if          79254 Oct 30 17:11 test_aaac
-rw-r--r--   1 i8   if          94671 Oct 30 17:11 test_aaad
-rw-r--r--   1 i8   if          94174 Oct 30 17:11 test_aaae
-rw-r--r--   1 i8   if          90584 Oct 30 17:11 test_aaaf
-rw-r--r--   1 i8   if          82640 Oct 30 17:11 test_aaag
-rw-r--r--   1 i8   if          89124 Oct 30 17:11 test_aaah
-rw-r--r--   1 i8   if          76908 Oct 30 17:11 test_aaai
-rw-r--r--   1 i8   if          77784 Oct 30 17:11 test_aaaj
-rw-r--r--   1 i8   if          83850 Oct 30 17:11 test_aaak
-rw-r--r--   1 i8   if          81390 Oct 30 17:11 test_aaal
-rw-r--r--   1 i8   if          86587 Oct 30 17:11 test_aaam
-rw-r--r--   1 i8   if          89396 Oct 30 17:11 test_aaan
-rw-r--r--   1 i8   if          60463 Oct 30 17:11 test_aaao


     test라는 파일을 50000byte 단위 및 "test_"로 시작되는 파일로 짤라라.

$ split -b 50000 test test_
$ ll
total 3276
-rw-r--r-- 1 i8 if 1622959 Oct 30 17:16 test
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_aa
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ab
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ac
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ad
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ae
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_af
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ag
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ah
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ai
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_aj
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ak
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_al
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_am
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_an
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ao
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ap
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_aq
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ar
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_as
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_at
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_au
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_av
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_aw
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ax
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ay
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_az
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_ba
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_bb
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_bc
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_bd
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_be
-rw-r--r-- 1 i8 if   50000 Oct 30 17:20 test_bf
-rw-r--r-- 1 i8 if   22959 Oct 30 17:20 test_bg

$ tail test_aa
 * [002] section: 0.000 sec, accumulation: 0.000 sec [<Leave> befEute]
 * [003] section: 0.000 sec, accumulation: 0.000 sec [<Enter> exe]
[Sertrol@142][2018-10-17 01:55:00] JOB BEGIN
Serviator load Start
----


아래의 -C 옵션과 비교 해보았을때 마지막 라인이 완전한 문장이 아닌 잘려나간 문장임을 확인 할 수 있음.

$ split -C 50000 test test_
$ ll
total 3276
-rw-r--r-- 1 in8 if 1622959 Oct 30 17:16 test
-rw-r--r-- 1 in8 if   49996 Oct 30 17:21 test_aa
-rw-r--r-- 1 in8 if   49986 Oct 30 17:21 test_ab
-rw-r--r-- 1 in8 if   49977 Oct 30 17:21 test_ac
-rw-r--r-- 1 in8 if   49980 Oct 30 17:21 test_ad
-rw-r--r-- 1 in8 if   49973 Oct 30 17:21 test_ae
-rw-r--r-- 1 in8 if   49978 Oct 30 17:21 test_af
-rw-r--r-- 1 in8 if   49993 Oct 30 17:21 test_ag
-rw-r--r-- 1 in8 if   49977 Oct 30 17:21 test_ah
-rw-r--r-- 1 in8 if   49990 Oct 30 17:21 test_ai
-rw-r--r-- 1 in8 if   49975 Oct 30 17:21 test_aj
-rw-r--r-- 1 in8 if   49939 Oct 30 17:21 test_ak
-rw-r--r-- 1 in8 if   49986 Oct 30 17:21 test_al
-rw-r--r-- 1 in8 if   49999 Oct 30 17:21 test_am
-rw-r--r-- 1 in8 if   49925 Oct 30 17:21 test_an
-rw-r--r-- 1 in8 if   49984 Oct 30 17:21 test_ao
-rw-r--r-- 1 in8 if   49982 Oct 30 17:21 test_ap
-rw-r--r-- 1 in8 if   49956 Oct 30 17:21 test_aq
-rw-r--r-- 1 in8 if   49985 Oct 30 17:21 test_ar
-rw-r--r-- 1 in8 if   49965 Oct 30 17:21 test_as
-rw-r--r-- 1 in8 if   49980 Oct 30 17:21 test_at
-rw-r--r-- 1 in8 if   49805 Oct 30 17:21 test_au
-rw-r--r-- 1 in8 if   49820 Oct 30 17:21 test_av
-rw-r--r-- 1 in8 if   49985 Oct 30 17:21 test_aw
-rw-r--r-- 1 in8 if   49957 Oct 30 17:21 test_ax
-rw-r--r-- 1 in8 if   49984 Oct 30 17:21 test_ay
-rw-r--r-- 1 in8 if   49965 Oct 30 17:21 test_az
-rw-r--r-- 1 in8 if   49985 Oct 30 17:21 test_ba
-rw-r--r-- 1 in8 if   49998 Oct 30 17:21 test_bb
-rw-r--r-- 1 in8 if   49902 Oct 30 17:21 test_bc
-rw-r--r-- 1 in8 if   49839 Oct 30 17:21 test_bd
-rw-r--r-- 1 in8 if   49949 Oct 30 17:21 test_be
-rw-r--r-- 1 in8 if   49951 Oct 30 17:21 test_bf
-rw-r--r-- 1 in8 if   24293 Oct 30 17:21 test_bg

$ tail test_aa
 * [002] section: 0.000 sec, accumulation: 0.000 sec [<Leave> befEute]
 * [003] section: 0.000 sec, accumulation: 0.000 sec [<Enter> exe]
[Sertrol@142][2018-10-17 01:55:00] JOB BEGIN
Serviator load Start


     test라는 파일을 접두어가 숫자로 들어가면서 test_"로 시작되는 파일로 짤라라.

$ split -d test test_     
$ ll
total 3220
-rw-r--r-- 1 in8 if 1622959 Oct 30 17:16 test
-rw-r--r-- 1 in8 if   49052 Oct 30 17:22 test_00
-rw-r--r-- 1 in8 if   49275 Oct 30 17:22 test_01
-rw-r--r-- 1 in8 if   49281 Oct 30 17:22 test_02
-rw-r--r-- 1 in8 if   49148 Oct 30 17:22 test_03
-rw-r--r-- 1 in8 if   49109 Oct 30 17:22 test_04
-rw-r--r-- 1 in8 if   63140 Oct 30 17:22 test_05
-rw-r--r-- 1 in8 if   56321 Oct 30 17:22 test_06
-rw-r--r-- 1 in8 if   69088 Oct 30 17:22 test_07
-rw-r--r-- 1 in8 if   66838 Oct 30 17:22 test_08
-rw-r--r-- 1 in8 if   69371 Oct 30 17:22 test_09
-rw-r--r-- 1 in8 if   68597 Oct 30 17:22 test_10
-rw-r--r-- 1 in8 if   72990 Oct 30 17:22 test_11
-rw-r--r-- 1 in8 if   68579 Oct 30 17:22 test_12
-rw-r--r-- 1 in8 if   75471 Oct 30 17:22 test_13
-rw-r--r-- 1 in8 if   75097 Oct 30 17:22 test_14
-rw-r--r-- 1 in8 if   78746 Oct 30 17:22 test_15
-rw-r--r-- 1 in8 if   72071 Oct 30 17:22 test_16
-rw-r--r-- 1 in8 if   75266 Oct 30 17:22 test_17
-rw-r--r-- 1 in8 if   70921 Oct 30 17:22 test_18
-rw-r--r-- 1 in8 if   72679 Oct 30 17:22 test_19
-rw-r--r-- 1 in8 if   66426 Oct 30 17:22 test_20
-rw-r--r-- 1 in8 if   66381 Oct 30 17:22 test_21
-rw-r--r-- 1 in8 if   59174 Oct 30 17:22 test_22
-rw-r--r-- 1 in8 if   58722 Oct 30 17:22 test_23
-rw-r--r-- 1 in8 if   49021 Oct 30 17:22 test_24
-rw-r--r-- 1 in8 if   22195 Oct 30 17:22 test_25


     test라는 파일을 10000라인을 기준 및 test_"로 시작되는 파일로 짤라라.

$ split -l 10000 test test_
$ ll
total 3220
-rw-r--r-- 1 in8 if 1622959 Oct 30 17:16 test
-rw-r--r-- 1 in8 if   49052 Oct 30 17:22 test_00
-rw-r--r-- 1 in8 if   49275 Oct 30 17:22 test_01
-rw-r--r-- 1 in8 if   49281 Oct 30 17:22 test_02
-rw-r--r-- 1 in8 if   49148 Oct 30 17:22 test_03
-rw-r--r-- 1 in8 if   49109 Oct 30 17:22 test_04
-rw-r--r-- 1 in8 if   63140 Oct 30 17:22 test_05
-rw-r--r-- 1 in8 if   56321 Oct 30 17:22 test_06
-rw-r--r-- 1 in8 if   69088 Oct 30 17:22 test_07
-rw-r--r-- 1 in8 if   66838 Oct 30 17:22 test_08
-rw-r--r-- 1 in8 if   69371 Oct 30 17:22 test_09
-rw-r--r-- 1 in8 if   68597 Oct 30 17:22 test_10
-rw-r--r-- 1 in8 if   72990 Oct 30 17:22 test_11
-rw-r--r-- 1 in8 if   68579 Oct 30 17:22 test_12
-rw-r--r-- 1 in8 if   75471 Oct 30 17:22 test_13
-rw-r--r-- 1 in8 if   75097 Oct 30 17:22 test_14
-rw-r--r-- 1 in8 if   78746 Oct 30 17:22 test_15
-rw-r--r-- 1 in8 if   72071 Oct 30 17:22 test_16
-rw-r--r-- 1 in8 if   75266 Oct 30 17:22 test_17
-rw-r--r-- 1 in8 if   70921 Oct 30 17:22 test_18
-rw-r--r-- 1 in8 if   72679 Oct 30 17:22 test_19
-rw-r--r-- 1 in8 if   66426 Oct 30 17:22 test_20
-rw-r--r-- 1 in8 if   66381 Oct 30 17:22 test_21
-rw-r--r-- 1 in8 if   59174 Oct 30 17:22 test_22
-rw-r--r-- 1 in8 if   58722 Oct 30 17:22 test_23
-rw-r--r-- 1 in8 if   49021 Oct 30 17:22 test_24
-rw-r--r-- 1 in8 if   22195 Oct 30 17:22 test_25

$ wc -l test*
  25448 test
  10000 test_aa
  10000 test_ab
   5448 test_ac
728x90

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

[명령어]basename / dirname  (0) 2018.11.02
[명령어]ln  (0) 2018.10.30
[명령어]find  (0) 2018.10.30
[명령어]touch  (0) 2018.10.30
[명령어]파일시스템 관련 df / du  (0) 2018.10.30
728x90

find
개요
특정 파일의 위치를 검색

Options
-name : 이름
-user : 소유자
-perm : 퍼미션
-szie : 크기
-mtime : 수정시간(modified)
-type : 파일타입

type 옵션 아규먼트
b : 블록특수파일
c : 문자특수파일
d : 디렉토리
f : 일반파일
l : 심볼릭링크
p : 파이프파일
s : 소켓
ex)  파일타입이 일반파일인  파일을 찾아라

$ find . -type f


size 옵션 아큐먼트
b : 블록단위
c : byte
k : kbyte
w : 2byte word
ex) 일반파일의 크기가 256byte인 파일을 찾아라

$ find . -type f -size 256c


일반파일의 크기가 256byte보다 이상 파일을 찾아라

$ find . -type f -size +256c


일반파일의 크기가 256byte보다 이하 파일을 찾아라

$ find . -type f -size -256c


Action
-exec : 외부명령 실행
-prune : 해당 결과 디렉토리는 검색 제외

ex)find [찾을 대상] [-option] [값] ([-Action] [명령])
※( )는 생략가능
./foo/bar 디렉토리는 제외하고, *.txt 파일을 찾아라

$ find . !\(-path './foo/bar' -prune\) -name "*.txt"

※AIX의 경우

$ find . ! -path ./foo/bar -name "*.txt"



./foo/bar와 ./dd/abc 디렉토리는 제외하고, *.txt 파일을 찾아라

$ find . !\(\(-path './foo/bar' -o -path './dd/abc'\) -prune\) -name "*.txt"


현재위치에서 하위의 모든 디렉토리 권한을 775로

$ find ./ -type d -exec chmod 775 {} \;


현재위치에서 하위의 모든 파일 권한을 644로

$ find ./ -type f -exec chmod 644 {} \;


모든 ".txt"파일에서 파일내용을 동시에 치환할때

$ find . -tpye f -name \*.txt -exec perl -pi -e 's/소스/타겟/g' {} \;


모든 ".txt"파일에서 파일명을 동시에 치환할때

$ find . -type f -name \*.txt |while read filename;do mv -f $filename `echo $filename | sed 's/소스/타겟/'`;done


A 파일을 B디렉토리로 무브

$ find . -name A파일명 -print | xargs -i mv {} B디렉토리명



728x90

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

[명령어]ln  (0) 2018.10.30
[명령어]split  (0) 2018.10.30
[명령어]touch  (0) 2018.10.30
[명령어]파일시스템 관련 df / du  (0) 2018.10.30
[명령어]압축관련 tar / gzip  (0) 2018.10.30
728x90

touch
 개요
 크기가 0인 새 파일을 생성하거나, 파일의 타임스탬프를 현재 시간으로 변경합니다.

 Options
 -t [YYYYMMDDhhmm]: 해당 파일스탬프로 변경

 ex)touch [-option] [대상 디렉토리 및 파일]
     dd라는 파일의 파일스탬프를 다음과 같이 변경 2017년08월28일20시

$ touch -t 201708282000 dd


728x90

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

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

df
 개요
 시스템의 마운트된 디스크 사용량 확인

 Options
 -k : 킬로바이트 단위로 현재 남은 용량을 확인 
 -h : 보기 좋게 보여줌 -> HPUX는 bdf라는 명령어로 대체

 ex)df [-option] 
     마운트된 디스크 사용량 확인

$ df -h


  
du
 개요
 특정 디렉토리 기준으로 디스크 사용량 확인

 Options
 -a : 하위 디렉토리에 포함된 파일까지 보여줌
  -s : 총 사용량을 확인
 -h : 보기 좋게 보여줌

 ex)du [-option] [대상 디렉토리 및 파일]
     현재 디렉토리 사용량 확인

$ du -s .


728x90

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

[명령어]find  (0) 2018.10.30
[명령어]touch  (0) 2018.10.30
[명령어]압축관련 tar / gzip  (0) 2018.10.30
[명령어]lsof  (0) 2018.10.24
[명령어]netstat  (0) 2018.10.24
728x90

tar
 개요
 확장명 tar로 파일을 묶거나 풀 수 있다.
 ※절대경로로 묶은 파일은 절대경로로 풀리는 것을 유의
 
 Options
 c : 새로운 묶음을 만든다.
 x : 묶인 파일을 푼다.
 t : 뿍음을 풀기 전에 묶인 경로를 보여준다.
 C : 묶음을 풀때 지정된 디렉터리에 푼다. 지정하지 않으면 동일한 디렉터리에 묶음이 풀린다.(x와 함께 사용)
 f : 묶음 파일 이름 지정
 v : 묶이거나 풀리는 과정을 보여준다.
 J : tar + xz
 z : tar + gzip
 j : tar + bzip2

 ex)tar [-option]
     파일 묶기

$ tar -cvf [파일명.tar] [대상 디렉토리 or 파일]


     파일 풀기

$ tar -xvf [파일명.tar]

 
     파일 보기

$ tar -tvf [파일명.tar]


gzip
 개요
 기본적으로 UNIX / LINUX 환경에서 사용하는 압축 프로그램

 Options
 -c : 압축결과를 출력하고 원본파일 유지
 -d : 압축 해제
 -f : 강제 압축
 -l : 압축 파일의 정보 출력
 -r : 디렉토리를 지정시 하위 포함된 디렉토리 및 파일까지 압축
 -t : 압축 테스트
 -v : 압축 할 때 자세한 정보 출력

 ex)gzip [-option] [대상]
     파일 압축

$ gzip [대상]


     파일 풀기

$ gunzip [대상.gz]


728x90

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

[명령어]touch  (0) 2018.10.30
[명령어]파일시스템 관련 df / du  (0) 2018.10.30
[명령어]lsof  (0) 2018.10.24
[명령어]netstat  (0) 2018.10.24
정규표현식의 사용(작성중)  (0) 2018.10.17
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

+ Recent posts