달력

122024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

truss - process trace

OS 2009. 2. 26. 11:46

http://mjhwang.tistory.com/entry/IBM-AIX에서-system-call을-trace-하는-shell

http://blog.naver.com/iloview012?Redirect=Log&logNo=40010947734

TRUSS 사용법
============
PURPOSE
-------
    System hang  이 걸리는 경우 oradebug 나, truss 를 통해 찾는 방안이다

Explanation
-----------
1. Oracle server process의 activity를 oradebug를 이용하여 trace
1) oracle process의 unix pid를 찾는다.
   $ps -ef|grep sqlplus 를 이용하여 sqlplus의 ip를 찾는다
   $ps -ef|grep pid
 
즉 child process(oracle) pid를 찾는다.

2) 기존의 svrmgrl session에서 oradebug를 이용하여 event 10046을 set함  
      svrmgr>oradebug setospid 1234
      svrmgr>oradebug event 10046 trace name context forever, level 12
3) user_dump_dest에서 trace file 내용을 확인(wait event확인)하여 문제를
찾는다.

2. TRUSS
 truss는  unix platform에 있는 utility로서(모든 platform에 있는 것은 아니며 platform 별로 이름이 틀리기도 하다. truss,trace,
strace,par등으로) 특정 실행 file이 실행 시 수행한 system call과 다른 곳으로 전달하기 위한 argument를 보여 주는 것이다.
excutable program이 user code에서 system code로 변하는 시점의 system call을 보여 주는 것으로 file 또는 i/o device의 open이나 또는 file,i/o device를 이용한 read또는 write시 또는 signal handling시 그외에도 child process의 spawning 등을 추적하고 보여 주는 것이다.

이의 사용을 위한 command 는

  truss -o /tmp/mytruss <program> <any arguments>
  truss -o /tmp/mytruss -p <pid of process>
  truss -o /tmp/mytruss -fae -p <pid of process>


 RS6000(AIX)경우는 truss command를 이용할 수 없고 smit admin tool에서 process 의 sys call을 trace 할 수 있다.
 
1) truss는 다음과 같은 경우에 이용하면 효과적입니다.
     (1) process에 의해 open 된 file을 확인하거나 그 file을 access서 발생하는 error를 확인하는 데
     (2) read나 wrote를 위해 open한 file의 contents를 확인하는 데
     (3) 어떤 sub-process가 spawn되었는지 아는 데
     (4) sub-process의 운영 환경을 확인하는 데
     (5) 어떤 dynamic libraries가 load되는지 아는 데
     (6) process가 spinning하는지 확인할 때  등입니다.
2) 다음과 같은 경우엔 truss가 비효율적 입니다.
     (1) memory mgmt나 memory leakage issue에서
     (2) 어떤 oracle function이 running되는지 알고자 할 때.
     (3) stack information을 얻고자 할 때


3. OS 별 turss
http://blog.naver.com/jourse?Redirect=Log&logNo=20032867183

SUN
 truss -aefo <output file> <executable>

HP
 tusc -afpo <output file> <pid> <executable>

IBM AIX 4.x
 Log on as root.
                       # trace -a -L 4000000 -T 2000000 -o ./trace.out;
                       # owsctl start admin
                       # trcstop
                       # trcrpt -O exec=on,pid=on trace.out > trcrpt.1
 
                       Or if present
 
                       sctrace, e.g.:
                       $ sctrace -Amo <output file> <executable>
                       $ prpt -p <trace file> <executable>
 
IBM AIX 5L
 truss -aefo <output file> <executable>
 truss -wall -rall -p 1048764

Linux
 strace -fo <output file> <executable>
 
Compaq Tru64 Unix
 trace -fo <output file> <executable>


Posted by marryjane
|

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.


vmware
Edit Virtual Machine Settings > Add.. >  Create a new virtual disk

부팅 후 마운트
[root@kkam:/root]df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.9G  6.0G  1.6G  80% /
none                  252M     0  252M   0% /dev/shm
/dev/sdb1             3.0G  2.2G  701M  76% /home2
[root@kkam:/root]fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1044     8385898+  83  Linux
/dev/sda2            1045        1305     2096482+  82  Linux swap

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         391     3140676   83  Linux

Disk /dev/sdc: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdc doesn't contain a valid partition table
[root@kkam:/root]mkfs -t ext3 /dev/sdc
mke2fs 1.35 (28-Feb-2004)
/dev/sdc is entire device, not just one partition!
Proceed anyway? (y,n) y
max_blocks 805306368, rsv_groups = 24576, rsv_gdb = 191
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
393216 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Writing inode tables: done                            
inode.i_blocks = 9176, i_size = 4243456
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@kkam:/root]mount -t ext3 /dev/sdc /home2
[root@kkam:/root]vi /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/                 /                       ext3    defaults        1 1
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
LABEL=SWAP-sda2         swap                    swap    defaults        0 0
/dev/hdc                /media/cdrom            auto    pamconsole,exec,noauto,managed 0 0
/dev/fd0                /media/floppy           auto    pamconsole,exec,noauto,managed 0 0
/dev/sdb1               /home2                  ext3    defaults        1 1
/dev/sdc                /home3                  ext3    defaults        1 1

'OS' 카테고리의 다른 글

truss - process trace  (0) 2009.02.26
계정 관리 명령어 (adduser, userdel, usermod) & 파일(passwd, shadow, group)  (0) 2009.02.18
route - DOS  (0) 2009.02.06
[AIX]하드웨어명령어  (0) 2008.09.15
nm - lib 안의 함수목록  (0) 2008.08.08
Posted by marryjane
|

route - DOS

2009. 2. 6. 10:54

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

[AIX]하드웨어명령어

OS 2008. 9. 15. 19:39

1. 제조사 
   - 회사명 = lsattr -El sys0
   - 모델명 = prtconf (하드웨어config)
 
2. OS version
   - 버전 = oslevel -r
 
3. CPU
   - Arch = prtconf
   - Hz   = lsattr -El proc0 (단위 Hz)
   - 개수 = lsdev -Cc processor (프로세서 물리적인 단위)
   - 논리개수 = bindprocessor -q (SMT 기능구현시 2배로 보임)
 
4. Memory
   - 용량 = lsattr -El sys0, prtconf
   - lsdev -C |grep mem
   - bootinfo -r
 
5. Virtual Memory
   - 용량 = lsps -a
 
6. Internal Disk
   - size = bootinfo -s hdisk(숫자) (Mb단위)
   - 개수 = lsdev -Cc disk
 
7. External Disk (SSA)
   - size = bootinfo -s hdisk(숫자) (Mb단위)
   - 개수 = lsdev -Cc pdisk , lsdev -Ct hdisk
 
8. rootvg mirror(y/n)
   - not mirror = lsvg rootvg (ACTIVE PVs = 1)
   - mirror     = lsvg rootvg (ACTIVE PVs = 2)
 
9. NIC
   - 속도, 개수 = lsparent -Ck ent
 
10. 시스템에 장착된 부품들에 위치확인
   - lscfg -vp
 
11. 시스템 parameter를 보고자 할 경우
   - lsattr -El sys0

  시스템 parameter를 변경하고자 할 경우
   - chdev -l sys0 -a parameter_name='value'

* 일반적 정보
prtconf                      = list system configuration
lscfg [-v]                  = devices (-v = verbose for microcode levels, etc)
lscfg -v                     = devices verbose (microcode level, firmware, etc)
lsdev -Cc adapter      = adapter cards
lsdev -Cc disk           = disks
lsdev -Cc processor  = CPU s
lsattr -El sys0            = serial number, model number, memory
* AIX 관련 정보
oslevel                      = AIX OS level
instfix -i |grep ML      = AIX maintenance level
lslpp -l                      = installed SW and levels
* Disk 관련 정보
lsvg -o                      = active volume groups
lsvg -p vgname          = disk drives in VG
lsvg -l vgname           = LV s in VG
lslv lvname                = LV detail
lslv -l lvname             = LV disk location
lspv                          = disks
lspv -l hdisk#             = LV s residing on a disk

* Network 관련 정보
lsdev -Cc if               = List network interfaces
netstat -rn                 = List network gateways


http://navylela.tistory.com/2

root@angeltime/]lsdev -Ccadapter   // LAN or FC card 확인
ent0      Available       Logical Host Ethernet Port (lp-hea)
ent1      Available       Logical Host Ethernet Port (lp-hea)
ent2      Available 03-00 2-Port 10/100/1000 Base-TX PCI-Express Adapter (14104003)
ent3      Available 03-01 2-Port 10/100/1000 Base-TX PCI-Express Adapter (14104003)
ent4      Available 04-00 2-Port 10/100/1000 Base-TX PCI-Express Adapter (14104003)
ent5      Available 04-01 2-Port 10/100/1000 Base-TX PCI-Express Adapter (14104003)
ent6      Available 06-00 2-Port 10/100/1000 Base-TX PCI-Express Adapter (14104003)
ent7      Available 06-01 2-Port 10/100/1000 Base-TX PCI-Express Adapter (14104003)
fcs0      Available 05-00 4Gb FC PCI Express Adapter (df1000fe)
lhea0     Available       Logical Host Ethernet Adapter (l-hea)
sa0       Available 01-08 2-Port Asynchronous EIA-232 PCI Adapter
sissas0   Available 09-08 PCI-X266 Planar 3Gb SAS Adapter
sisscsia0 Available 02-08 PCI-XDDR Dual Channel Ultra320 SCSI Adapter
usbhc0    Available 0A-08 USB Host Controller (33103500)
usbhc1    Available 0A-09 USB Host Controller (33103500)
vsa0      Available       LPAR Virtual Serial Adapter

::::::::::::::::::::::::::::::::::::::  네트워크 링스 속도 확인 및 조절  ::::::::::::::::::::::::::::::::::::::::::::::

만약  LINK STATe

#smitty dev > communication > Ehternet adapter > Adapter > show & change

 ^M                                     Change / Show Characteristics of an Ethernet Adapter

Type or select values in entry fields.
Press Enter AFTER making all desired changes.
 
                                                        [Entry Fields]
  Ethernet Adapter                                    ent2
  Description                                         2-Port 10/100/1000 Base-TX PCI-Express Adapter (14104003)
  Status                                              Available
  Location                                            03-00
  Rcv descriptor queue size                          [1024]                                                                      +#
  TX descriptor queue size                           [512]                                                                       +#
  Software transmit queue size                       [8192]                                                                      +#
  Transmit jumbo frames                               no                                                                         +
  Enable hardware TX TCP resegmentation               yes                                                              +
  Enable hardware transmit and receive checksum       yes                                                             +
  Media speed                                         Auto_Negotiation                                                           +
  Enable ALTERNATE ETHERNET address                   no                                                              +
  ALTERNATE ETHERNET address                         [0x000000000000]                                               +
  Apply change to DATABASE only                       no                                                                     +
  Enable failover mode                                disable                                                                     +

'OS' 카테고리의 다른 글

vmware 하드 추가 & 마운트  (0) 2009.02.18
route - DOS  (0) 2009.02.06
nm - lib 안의 함수목록  (0) 2008.08.08
HOW-TO Glance  (0) 2008.08.06
sed - 스트림 에디터  (0) 2008.07.16
Posted by marryjane
|

nm - lib 안의 함수목록

OS 2008. 8. 8. 14:34

c 라이브러리안의 함수목록을 보는 명령어로 nm 이 있다.
$nm -X비트수 파일명
요 방법으로 라이브러리가 해당 비트에 맞는지도 얼추 확인해볼 수 있다.


nm [ -a | --debug-syms ]  [ -g | --extern-only ]
   [ -B ]  [ -C | --demangle[=style] ] [ -D | --dynamic ]
   [ -s | --print-armap ]  [ -A | -o | --print-file-name ]
   [ -n | -v | --numeric-sort ]  [ -p | --no-sort ]
   [ -r | --reverse-sort ]  [ --size-sort ] [ -u | --undefined-only ]
   [ -t radix | --radix=radix ] [ -P | --portability ]
   [ --target=bfdname ] [ -f format | --format=format ]
   [ --defined-only ] [-l | --line-numbers ]  [ --no-demangle ]
   [ -V | --version ]  [ -X 32_64 ]  [ --help ]  [ objfile... ]

GNU nm lists the symbols from object files objfile.... If no object files are listed as arguments, nm assumes the file `a.out'.

For each symbol, nm shows:

GNU nm은 오브젝트 파일 objfile...의 심볼을 출력한다. 아규먼트로 어떤 오브젝트 파일도 사용하지 않으면 `a.out'을 가정한다.

  • The symbol value, in the radix selected by options (see below), or hexadecimal by default.
    심볼 값은 아래 설명할 옵션에서 지정한 진수로 출력한다. 기본값은 16 진수이다.
  • The symbol type. At least the following types are used; others are, as well, depending on the object file format. If lowercase, the symbol is local; if uppercase, the symbol is global (external).
    심볼 타입. 최소한 다음 타입들이 사용된다. 나머지는 오브젝트 파일 형식에 따라 다르다. 소문자는 심볼이 지역 심볼임을, 대문자는 심볼이 전역 (외부) 심볼임을 나타낸다.
    A
    The symbol's value is absolute, and will not be changed by further linking.
    심볼 값이 절대적이여서, 더 링크를 해도 변경되지 않는다.
    B
    The symbol is in the uninitialized data section (known as BSS).
    심볼이 (BSS라 부르는) 초기화되지않은 자료 섹션에 저장된다.
    C
    The symbol is common. Common symbols are uninitialized data. When linking, multiple common symbols may appear with the same name. If the symbol is defined anywhere, the common symbols are treated as undefined references. For more details on common symbols, see the discussion of --warn-common in section `Linker options' in The GNU linker.
    심볼이 공통 심볼이다. 공통 심볼은 초기화되지않은 자료이다. 링크시 같은 이름을 가진 여러 공통 심볼이 가능하다. 심볼이 어디에도 정의되지 않았다면 공통 심볼은 정의되지 않은 참조로 취급된다. 공통 심볼에 자세히 알려면, The GNU linker의 `Linker options'에서 --warn-common 옵션 설명을 참고하라.
    D
    The symbol is in the initialized data section.
    심볼이 초기화된 자료 섹션에 위치한다.
    G
    The symbol is in an initialized data section for small objects. Some object file formats permit more efficient access to small data objects, such as a global int variable as opposed to a large global array.
    심볼이 크기가 작은 객체를 위한 초기화된 자료 섹션에 위치한다. 몇몇 오브젝트 파일 형식은 (큰 전역 배열에 대응되는 전역 정수 변수와 같이) 작은 자료 객체를 더 효율적으로 접근할 수 있다.
    I
    The symbol is an indirect reference to another symbol. This is a GNU extension to the a.out object file format which is rarely used.
    심볼은 다른 심볼로의 간접 참조이다. 이는 거의 사용되지 않는 a.out 오브젝트 파일 형식에서 대한 GNU 확장이다.
    N
    The symbol is a debugging symbol.
    심볼이 디버그 심볼이다.
    R
    The symbol is in a read only data section.
    심볼이 읽기 전용 섹션에 있다.
    S
    The symbol is in an uninitialized data section for small objects.
    심볼이 작은 객체를 위한 초기화되지않은 자료 섹션에 있다.
    T
    The symbol is in the text (code) section.
    심볼이 텍스트 (text, 코드) 섹션에 있다.
    U
    The symbol is undefined.
    심볼이 정의되지 않았다.
    V
    The symbol is a weak object. When a weak defined symbol is linked with a normal defined symbol, the normal defined symbol is used with no error. When a weak undefined symbol is linked and the symbol is not defined, the value of the weak symbol becomes zero with no error.
    심볼은 약한 객체이다. 약한 객체가 정의된 심볼과 링크되면 오류없이 정의된 심볼이 사용된다. 정의되지않은 약한 심볼이 링크될 때 정의된 심볼이 없다면 오류없이 약한 심볼 값은 0이 된다.
    W
    The symbol is a weak symbol that has not been specifically tagged as a weak object symbol. When a weak defined symbol is linked with a normal defined symbol, the normal defined symbol is used with no error. When a weak undefined symbol is linked and the symbol is not defined, the value of the weak symbol becomes zero with no error.
    심볼은 명시적으로 약한 객체 심볼이라고 표시되지 않은 약한 심볼이다. 약한 객체가 정의된 심볼과 링크되면 오류없이 정의된 심볼이 사용된다. 정의되지않은 약한 심볼이 링크될 때 정의된 심볼이 없다면 오류없이 약한 심볼 값은 0이 된다.
    -
    The symbol is a stabs symbol in an a.out object file. In this case, the next values printed are the stabs other field, the stabs desc field, and the stab type. Stabs symbols are used to hold debugging information; for more information, see section `Stabs Overview' in The "stabs" debug format.
    심볼은 a.out 오브젝트 파일에서 stabs 심볼이다. 이 경우 다음으로 출력되는 값은 stabs other 필드, stabs desc 필드, stab 타입이다. stabs 심볼은 디버깅 정보를 저장한다. The "stabs" debug format의 `Stabs Overview'을 참고하라. (역주; 이 문서는 GNU GDB 소스코드에 포함되있다.)
    ?
    The symbol type is unknown, or object file format specific.
    알 수 없거나 오브젝트 파일 형식에 의존하는 심볼 타입.
  • The symbol name.
    심볼 이름.

The long and short forms of options, shown here as alternatives, are equivalent.
같이 설명하는 긴 형식과 작은 형식의 옵션은 동일하다.

-A
-o
--print-file-name
Precede each symbol by the name of the input file (or archive member) in which it was found, rather than identifying the input file once only, before all of its symbols.
심볼들 앞에 한번만 입력파일을 출력하지 않고, 각 심볼 앞마다 심볼이 발견된 입력파일 이름을 (혹은 아카이브 멤버를) 출력한다.
-a
--debug-syms
Display all symbols, even debugger-only symbols; normally these are not listed.
보통 출력하지 않는 디버거용 심볼을 포함하여 모든 심볼을 출력한다.
-B
The same as `--format=bsd' (for compatibility with the MIPS nm).
(MIPS nm과 호환을 위해) `--format=bsd'와 동일하다.
-C
--demangle[=style]
Decode (demangle) low-level symbol names into user-level names. Besides removing any initial underscore prepended by the system, this makes C++ function names readable. Different compilers have different mangling styles. The optional demangling style argument can be used to choose an appropriate demangling style for your compiler. See section c++filt, for more information on demangling.
저수준 심볼 이름을 사람이 알아볼 수 있게 풀어쓴다(디맹글링). 시스템에서 앞에 붙인 `_'을 제거하는 것 외에 C++ 함수 이름도 풀어쓴다. 컴파일러 마다 다른 맹글링 형식을 사용한다. 선택적인 디맹글링 형식 아규먼트는 컴파일러에 해당하는 디맹글링 형식을 선택한다. 디맹글링에 대해서는 c++filt을 참고하라.
--no-demangle
Do not demangle low-level symbol names. This is the default.
저수준 심볼 이름을 디맹글링하지 않는다. 이것이 기본 행동이다.
-D
--dynamic
Display the dynamic symbols rather than the normal symbols. This is only meaningful for dynamic objects, such as certain types of shared libraries.
보통 심볼이 아니라 동적 심볼을 출력한다. 이는 공유 라이브러리와 같은 동적 객체에만 의미가 있다.
-f format
--format=format
Use the output format format, which can be bsd, sysv, or posix. The default is bsd. Only the first character of format is significant; it can be either upper or lower case.
출력 형식으로 format을 사용한다. 출력 형식에는 bsd, sysv, posix을 사용할 수 있다. 기본값은 bsd이다. 형식은 format의 첫 문자만 보고 결정한다. 대소문자 모두 가능하다.
-g
--extern-only
Display only external symbols.
외부 심볼만 출력한다.
-l
--line-numbers
For each symbol, use debugging information to try to find a filename and line number. For a defined symbol, look for the line number of the address of the symbol. For an undefined symbol, look for the line number of a relocation entry which refers to the symbol. If line number information can be found, print it after the other symbol information.
각 심볼에 대응하는 파일명과 줄 번호를 찾기 위해서 디버깅 정보를 이용한다. 정의된 심볼은 심볼 주소에 대응하는 줄 번호를 찾는다. 정의되지 않은 심볼은 심볼을 참조하는 재배치 항목의 줄 번호를 찾는다. 줄 번호 정보가 발견되면 다른 심볼 정보 뒤에 출력한다.
-n
-v
--numeric-sort
Sort symbols numerically by their addresses, rather than alphabetically by their names.
심볼의 이름이 아니라 주소로 심볼을 정렬한다.
-p
--no-sort
Do not bother to sort the symbols in any order; print them in the order encountered.
심볼을 정렬하지 않는다. 발견되는 순서대로 출력한다.
-P
--portability
Use the POSIX.2 standard output format instead of the default format. Equivalent to `-f posix'.
기본 출력 형식 대신에 POSIX.2 표준 형식을 사용한다. `-f posix'와 같다.
-s
--print-armap
When listing symbols from archive members, include the index: a mapping (stored in the archive by ar or ranlib) of which modules contain definitions for which names.
아카이브 멤버에서 심볼을 출력할 때, 어떤 모듈이 어떤 이름의 정의를 포함하는지 (arranlib로 아카이브에 저장한) 대응도 출력한다.
-r
--reverse-sort
Reverse the order of the sort (whether numeric or alphabetic); let the last come first.
(숫자순이나 문자순이나) 정렬 순서를 반대로 한다. 뒤의 것이 앞에 오게 한다.
--size-sort
Sort symbols by size. The size is computed as the difference between the value of the symbol and the value of the symbol with the next higher value. The size of the symbol is printed, rather than the value.
크기로 심볼을 정렬한다. 크기는 심볼 값과 다음으로 값이 큰 심볼 값의 차이로 계산된다. 심볼 값 대신 심볼의 크기가 출력된다.
-t radix
--radix=radix
Use radix as the radix for printing the symbol values. It must be `d' for decimal, `o' for octal, or `x' for hexadecimal.
심볼 값을 출력하는 진수로 radix을 사용한다. `d'는 10 진수, `o'는 8 진수, `x'는 16 진수를 나타낸다.
--target=bfdname
Specify an object code format other than your system's default format. See section Target Selection, for more information.
시스템 기본 오브젝트 형식 대신 다른 형식을 지정한다. Target Selection를 참고하라.
-u
--undefined-only
Display only undefined symbols (those external to each object file).
정의되지 않은 (외부) 심볼만 출력한다.
--defined-only
Display only defined symbols for each object file.
각 오브젝트 파일에서 정의된 심볼만 출력한다.
-V
--version
Show the version number of nm and exit.
nm 버전을 출력하고 종료한다.
-X
This option is ignored for compatibility with the AIX version of nm. It takes one parameter which must be the string 32_64. The default mode of AIX nm corresponds to -X 32, which is not supported by GNU nm.
이 옵션은 AIX의 nm와 호환을 위한 것으로 무시된다. 이 옵션은 한 파라미터를 받으며, 그 파라미터는 32_64이어야 한다. AIX nm의 기본값은 GNU nm이 지원하지 않는 -X 32이다.

'OS' 카테고리의 다른 글

route - DOS  (0) 2009.02.06
[AIX]하드웨어명령어  (0) 2008.09.15
HOW-TO Glance  (0) 2008.08.06
sed - 스트림 에디터  (0) 2008.07.16
ulimit 명령어  (0) 2008.07.14
Posted by marryjane
|

HOW-TO Glance

OS 2008. 8. 6. 16:06

http://www.adminschool.net/wiki/doku.php?do=show&id=os%3Ahpux%3Aadmin%3Aglance

Glance 란?

  • Glance는 HP-UX 상에서 강력하면서도 쉽게 사용할 수 있는 Systerm performance monitor 툴이다.
  • Glance는 Systerm 자원과 Active processes에 대한 일반적인 정보와
    CPU, 메모리, Disk IO, Network, NFS , System Calls, Swap 또는 System Table 화면을 통해 더욱 특수한 정보를 제공해 주며,
    Glance를 터미널 환경에서 실행함으로써 HP 9000 시리즈의 Performance problem의 분석을 도울 수 있다.

Option

Option Description
-j interval 스크린 refresh 간격을 초 단위로 설정한다.
interval의 범위는 2에서 32767 사이이다.
-p [dest] 데이타를 출력할 디바이스를 설정한다.
기본값은 기본 lp device이다.
-f dest 데이타를 출력할 파일을 설정한다.
-maxpages numpages p 명령으로 출력할 최대 페이지 수를 바꾼다.
-command 3절에에서 소개되는 command 를 이용하여 다른 initial screen을 볼 수 있도록 한다.
command들 중 일부(첫번째 섹션)만이 이 옵션에 사용될 수 있다.
-nice nicevalue Glance 프로세스에 대한 nice priority를 설정할 수 있게 한다.
기본 값은 -10이다.
-nosort 소트를 하지 않는다.
이에 따라 CPU overhead가 줄어든다.
-lock Glance 가 메모리에 lock시킨다.
이 옵션을 사용함으로써 response time 이 향상 되나 에러가 발생할 수 있다.
-adviser_off Adviser없이 Glance를 실행 시킨다.
-adviser_only Adviser만을 stdout을 통하여 보여준다.
stdout을 파일로 redirection 하여 Glance Adviser가 백그라운드로 돌게 할 수 있다.
-iterations count Glance 가 실행되는 최대 횟수를 지정할 수 있다.
Glance는 count에 지정된 수 만큼 실행되고 중단된다.
count는 2이상이어야 하며, 2 이하일 때는 2번 실행하게 된다.
-syntax filename Adviser에 의해 사용될 Syntax 파일을 지정한다.
파일을 지정하지 않 을 경우 '~/adviser.syntax'파일을 사용하고
이 파일이 없을 경우 /var/opt/perf/adviser.syntax 파일을 사용하게 된다.
-disks n, -kernel path, -nfs n, -pids n mideavom의 초기값들을 설정하는 데 사용된다.

Command List

Command Screen Displayed/Description
a Processor에 할당된 CPU 사용량을 보여 준다.
c CPU의 사용에 대한 종합적인 정보를 보여 준다.
d Disk 사용에 대한 종합적인 정보를 보여 준다.
g 현재 Process들의 List를 보여 준다.
i File System에 의한 IO상황을 보여준다.
l Network By Interface
m Memory 의 상황을 보여 준다.
n NFS By System
t System Tables Report
u IO By Disk
v IO By Logical Volume
w Swap Space
A Application List
B Global Wait States
D DCE Global Activity
K DCE Process List
N NFS Global Activity
P PRM Group List
T Transaction Tracker
Y Global System Calls
? Command Menu
S Select a NFS system/Disk/Application/Trans
s Select a single process
E Process DCE Activity
F Process Open Files
L Process System Calls
M Process Memory Regions
O Process DCE Operations
R Process Resources
W Process Wait States
b 앞 페이지로 넘긴다.
f 다음 페이지로 넘어간다
h Online help
j 화면 refresh간격을 조정한다.
o 프로세스 threshold 를 조정한다.
p Print toggle
q 종료
r 현재 화면을 리프레시 한다.
y 프로세스의 nice-value를 수정한다.
z statistics를 0으로 리셋한다.
> 다음 화면(logical)을 출력한다.
< 이전 화면(logical)을 출력한다.
! 쉘을 띄운다.
  • 위의 command는 Top level screens commands 와 Secondary Screens commands 그리고 misc-ellaneous commands의 세개의 그룹으로 나위어 진다.
    이중 Top level screens commands가 command 옵션에서 사용될 수 있다.

Examples

Base Case 1

  1. Shell에서 glance를 실행시키면 초기 화면(figure 1)이 뜨고, 잠시후 Process List 화면이 뜬다.
  2. 's'키를 누르고 pid를 입력하면 하나의 프로세스에 대한 상세한 정보를 얻을 수 있다.
  3. Application List에서 'S'를 누르면 하나의 어플리케이션에서 돌고 있는 상세한 프로세스들에 대한 정보를 볼 수 있다.
    이와 같은 기능은 NFS by System, IO by Disk, Transaction Tracker화면에서 사용할 수 있다.
  4. '?'키를 누르면 Command List를 보여주고, 'h'키를 누르면 온라인 도움말이 뜬다.

FaQ , QnA

  • glance에서 buffer cache의 size가 display되게 하려면?
    $ glance -m 
    </code
    
      * motif base의 glance를 display 하려면? <code>
    /usr/perf/bin/gpm 을 하면 됩니다.
    s800 의 경우에는 DISPLAY=xterm:0.0 ;export DISPLAY 를 setup해야 합니다. 
    
  • kill로 죽인 process가 ps -ef 에는 나타나지 않지만 glance로 보면 살아있는 것처럼 나타납니다.
    /usr/perf/bin/midaemon 를 다시 restart하십시요.
    #ps -ef | grep midaemon 
    #kill 
    #/usr/perf/bin/midaemon 
    
  • glance를 실행하면 UNABLE TO INITIALIZE YOUR TERMINAL이라는 error가 발생합니다.
    glance는 terminal이 80x24가 되어야 작동합니다. 
    # stty -a를 하시면 다음 정보를 볼수 있습니다.
    speed 9600 baud; line = 0; susp = ^Z; dsusp = ^@
    rows = 0; columns = 80
    intr = ^C; quit = ^\; erase = ^H; kill = ^U; swtch = ^@
    
    위에서 rows와 columns를 보면 rows가 0임을 알수 있습니다. 
    rows를 다음과 같이 수정합니다. 
    # stty rows 24
    다시 glance를 실행하시면 됩니다. 
    
  • glance 실행시 아래와 같은 error message가 뜹니다.
    == Fatal Nums Error == $Header: db.C,v 1.200 95/05/11 13:45:02 smead Exp $ ==
    User: root Date: Tue Sep 12 15:08:52
    File: nums.C Line: 414 Product id: Gpm
    System: ov-serve B.10.01 9000/819
    
    Midaemon not responding [MI_SHARED:]
    == End of Error Msg ============================= 
    
    
    먼저 midaemon을 명령행에서 실행시킵니다. 
    # /opt/perf/bin/midaemon 
    
    여전히 error가 발생하면 /var/opt/perf/datafiles directory가 존재하는지 확인후 만약 없으면 mkdir로 만들어 줍니다. 
    # cd /var/opt/perf 
    # mkdir datafiles 
    # chmod 777 datafiles 
    # chown bin:bin datafiles
     
    glance를 실행시키면 정상적으로 동작할 것입니다. 
    
 

'OS' 카테고리의 다른 글

[AIX]하드웨어명령어  (0) 2008.09.15
nm - lib 안의 함수목록  (0) 2008.08.08
sed - 스트림 에디터  (0) 2008.07.16
ulimit 명령어  (0) 2008.07.14
netstat 의 status 별 설명  (0) 2008.07.14
Posted by marryjane
|

sed - 스트림 에디터

OS 2008. 7. 16. 16:19

http://www.ibm.com/developerworks/kr/linux/library/l-sed1.html

sed
파일 편집 과정을 자동화하여 파일 편집을 일괄로 처리하거나, 기존 파일을 변경할 수 있는 고급 기능을 가진 스크립트를 작성할 수 있다면 참 좋을 것 같다. 다행히도 우리에게 "sed"가 있다.

sed는 리눅스 및 거의 모든 유닉스 제품군에 포함된 경량의 스트림 에디터이다. sed는 좋은 기능들이 많이 갖추었다. 우선, 매우 가볍다. 기존 스크립팅 언어보다 훨씬 작다. 둘째, sed는 스트림(stream) 에디터이기 때문에 stdin에서 받은 데이터를 편집할 수 있다. 따라서 편집할 데이터를 디스크 상의 파일에 저장할 필요가 없다. 데이터는 sed로 쉽게 연결(pipe)될 수 있기 때문에 강력한 쉘 스크립트의 길고 복잡한 파이프라인의 일부로서 sed를 쉽게 사용할 수 있다. 한번 시도해보라.

sed 예제
sed는 인풋 데이터에 대해 사용자가 지정한 편집 연산("commands")을 수행하여 작동한다. sed는 라인 기반(line-based)이기 때문에 명령어는 순서대로 각 라인에서 수행된다. sed는 결과를 표준 아웃풋(stdout)에 작성한다. 어떤 인풋 파일들도 수정하지 않는다.

예제를 보도록 하자. sed가 중요한 태스크를 어떻게 수행하는가 보다는 sed가 어떻게 작동하는지를 설명할 것이기 때문에 먼저 제공되는 코드들은 약간 이상하다. 하지만 sed가 처음이라면 이것을 이해하는 것도 중요하다.

$ sed -e 'd' /etc/services

이 명령어를 입력하면 아웃풋이 없다. 왜 그럴까? 이 예제에서 편집 명령어인 'd'와 함께 sed를 호출했다. sed는 /etc/services 파일을 열고, 패턴 버퍼로 라인을 읽어 들이고, 편집 명령어("delete line")를 수행한 다음, 패턴 버퍼를 프린트했다.(비어있다.) 그리고 나서 후속 라인들에 대해서도 이 같은 단계들을 반복했다. 이것은 어떤 아웃풋도 만들지 않았다. 'd' 명령어는 패턴 버퍼에서 모든 라인을 영구히 삭제하기 때문이다.

이 예제의 포인트는 두 가지이다. 우선, /etc/services는 절대 변경되지 않았다. 이것은 sed는 이것을 인풋으로서 사용하여 명령행 라인에서 여러분이 지정한 파일에서 읽기만 한다. 파일을 수정하지 않는다. 두 번째로 알아야 할 것은 sed는 라인(line) 지향이란 점이다. 'd' 명령어는 sed에게 모든 인커밍 데이터들을 삭제하라고 명령하지 않는다. 대신 sed는 /etc/services의 각 라인을 하나씩 내부 버퍼(패턴 버퍼)로 읽어 들인다. 일단 라인이 패턴 버퍼에서 읽혀지면 'd' 명령어가 작동하고 패턴 버퍼의 내용을 프린트한다. (이 예제에서는 아무것도 없었다.) 나중에 명령어가 적용될 라인을 정하는 주소 범위에 대해 설명하겠다. 주소가 없다면 명령어는 모든 라인에 적용된다.

마지막으로, 'd' 명령어에 싱글 쿼트를 사용한다는 것이다. sed 명령어에는 싱글 쿼트를 사용하는 습관을 들이는 것이 좋다.

기타 sed 예제
다음은 sed를 사용하여 아웃풋 스트림에서 /etc/services 파일의 첫 번째 줄을 제거하는 방법을 보여주는 예제이다.

$ sed -e '1d' /etc/services | more

여러분도 보다시피 이 명령어는 첫 번째 'd' 명령어와 매우 비슷하다. 앞에 숫자 '1'이 붙은 것만 다르다. '1' 이 라인 번호를 의미한다고 생각했다면 여러분이 맞다. 첫 번째 예제에서는 'd'만 사용했다. 이번에는 앞에 숫자(주소)가 붙은 'd' 명령어를 사용한다. 이 주소를 사용하면 sed에게 특정 라인 또는 라인들에서만 편집을 수행하도록 명령할 수 있다.

주소 범위
이제 주소 범위를 설정하는 방법을 설명하겠다. 이 예제에서 sed는 아웃풋의 1번부터 10번 라인을 삭제한다.

$ sed -e '1,10d' /etc/services | more

두 개의 주소를 콤마로 구별하면 sed는 첫 번째 주소부터 두 번째 주소까지 명령어를 적용한다. 이 예제에서 'd' 명령어는 1에서 10까지의 라인에 적용되었다. 다른 라인들은 무시된다.

정규식이 있는 주소
이제 보다 유용한 예제를 생각해보자. /etc/services 파일의 내용을 보고싶지만, 여기에 삽입된 주석에는 별 관심이 없다면? 알다시피 /etc/services 파일에서 주석을 표시할 때, '#'문자를 가진 라인에 붙인다. 주석을 보지 않으려면 sed에게 '#'으로 시작하는 라인을 삭제하도록 한다.

$ sed -e '/^#/d' /etc/services | more

어떤 일이 일어나는가? sed가 거뜬히 원하는 작업을 수행한다. 어떻게 이것이 가능한지 분석해보자.

'/^#/d' 명령어를 이해하려면 하나씩 분리해서 생각해보자. 우선 'd'를 제거해보자. 떼어내고 보니 ''/^#/'가 남아있다. 이것은 새로운 유형의 정규식 주소이다. 정규식 주소에는 언제나 슬래시가 사용된다. 이들은 패턴(pattern)을 지정하고, 정규식 주소를 바로 뒤따르는 명령어가 이 특정 패턴과 매치될 경우 라인에 적용된다.

따라서, ''/^#/'는 정규식이다. 하지만 이것이 무슨 일을 하는가? 정규식에 대해 좀 더 알아보자.

주소
지금까지 라인 주소, 라인 범위 주소, regexp 주소를 살펴보았다. 하지만 더 많은 가능성이 있다. 두 개의 정규식을 콤마로 분리하여 지정할 수 있다. sed는 첫 번째 정규식을 찾는 첫 번째 라인부터 시작하여, 두 번째 정규식을 찾는 라인을 포함할 때까지 모든 라인들을 찾을 것이다. 예를 들어, 아래 명령어는 "BEGIN"을 포함하고 있는 라인으로 시작해서, "END"를 포함하는 라인으로 끝나는 텍스트 블록을 프린트 할 것이다.

$ sed -n -e '/BEGIN/,/END/p' /my/test/file | more

"BEGIN"을 찾지 못하면 어떤 데이터도 프린트되지 않는다. 그리고 "BEGIN"은 찾았지만, "END"를 찾지 못했다면 모든 라인들은 프린트되지 않는다. 이것은 sed가 스트림 지향 에디터이기 때문이다.

C 소스 예제
C 소스 파일에서 main() 함수만 프린트하려면 다음을 입력한다.

$ sed -n -e '/main[[:space:]]*(/,/^}/p' sourcefile.c | more

이 명령어는 두 개의 정규식, '/main[[:space:]]*(/' and '/^}/', 한 개의 명령어 'p'를 갖고 있다. 첫 번째 정규식은 "main" 과 그 뒤를 따르는 공간과 탭 그리고 열린 괄호를 찾는다. 이것은 ANSI C main() 선언의 시작을 찾는다.

이 정규식에서 '[[:space:]]' 문자 클래스를 주목하라. 이것은 sed에게 탭 또는 공간을 찾도록 명령하는 특별한 키워드이다. 원한다면, '[[:space:]]' 를 타이핑하는 대신에 '['를 타이핑하고, 그런 다음 빈 공간, Control-V, 탭, ']'순서로 타이핑한다.

Control-V 는 명령어 확장을 수행하기 보다 실제 탭을 삽입해야 한다는 것을 의미한다. 좋다. 이제 두 번째 regexp로 넘어가 보자. '/^}'는 '}' 문자를 찾는다. 이것은 새로운 라인의 시작에 나타난다. 코드가 잘 포맷되었다면 main() 함수의 닫기 괄호를 찾을 것이다.

'p' 명령어는 언제나 같은 일을 수행한다. sed에게 라인을 프린트할 것을 명령한다. 우리가 '-n' 모드에 있기 때문이다. C 소스 파일에서 명령어를 실행하라. 이것은 전체 main() { } 블록을 아웃풋할 것이다. 여기에는 초기 "main()"과 닫기 '}'가 포함된다.

정규식
우리는 정규식을 사용하여 텍스트의 패턴을 표시한다. 쉘 명령행에서 '*' 문자를 사용했다면 같은 것은 아니지만, 정규식과 비슷한 것을 사용했던 것이다. 다음은 정규식에 사용할 수 있는 특수 문자이다.

문자 설명
^ 라인의 시작을 찾는다.
$ 라인의 끝을 찾는다.
. 한 개의 문자를 찾는다.
* 이전 문자의 0 또는 그 이상 발생한 선행 문자를 찾는다.
[ ] [ ]안에 있는 모든 문자들을 찾는다.

정규식을 이해하려면 예제만큼 좋은 것이 없다. 이 모든 예제들은 sed에서 허용된다. 명령어 왼쪽에 유효 주소가 나타나도록 한다.

정규식
표현식
설명
/./ 최소한 한 개 이상의 문자를 포함하고 있는 라인을 찾는다.
/../ 최소한 두 개 이상의 문자를 포함하고 있는 라인을 찾는다.
/^#/ '#'으로 시작하는 라인을 찾는다.
/^$/ 모든 공백 라인을 찾는다.
/}^/ '}' (공간 없음)로 끝나는 라인을 찾는다.
/} *^/ 0 또는 그 이상 공간이 뒤에 붙는 '}' 로 끝나는 라인을 찾는다.
/[abc]/ 소문자 'a', 'b', 'c'를 포함하고 있는 라인을 찾는다.
/^[abc]/ 'a', 'b', 'c'로 시작하는 라인을 찾는다.

이 예제를 시도해 보기 바란다. 시간을 들여 정규식을 익히기 바란다. 그리고 정규식을 직접 만들어보라. regexp를 다음과 같이 사용할 수 있다.

$ sed -e '/regexp/d' /path/to/my/test/file | more
여기에서 sed는 매치된 라인을 삭제하게 될 것이다. sed에게 regexp 매치들을 프린트(print)하고, 매치하지 않는 것을 삭제하라고 명령하여 정규식에 익숙해 지는 것이 다른 어떤 방법들 보다 쉽다.

$ sed -n -e '/regexp/p' /path/to/my/test/file | more
새로운 '-n' 옵션을 주목하라. 명확한 명령이 없는 한 패턴을 프린트하지 말 것을 sed에게 명령한다. 'd' 명령어를 'p' 명령어로 대체했다는 것을 알게 될 것이다. 이것은 명확하게 sed에게 패턴 공간을 프린트할 것을 명령하고 있다. 당연히 매치들만 프린트된다.

'OS' 카테고리의 다른 글

nm - lib 안의 함수목록  (0) 2008.08.08
HOW-TO Glance  (0) 2008.08.06
ulimit 명령어  (0) 2008.07.14
netstat 의 status 별 설명  (0) 2008.07.14
특정 유저 process 찾아 한라인으로 죽이기  (0) 2008.07.14
Posted by 알 수 없는 사용자
|

ulimit 명령어

OS 2008. 7. 14. 17:10

ulimit 명령어 시스템에서 사용가능한 자원의 한계(limit)를 알 수 있는 유닉스 명령어가 ulimit이다.

1. ulimit -a의 수행결과는 일반적으로 아래와 같다.
time(seconds)        한계가 없음. 혹은 unlimited
file(blocks)         2097151
data(kbytes)         131072
stack(kbytes)        32768
memory(kbytes)       32768
coredump(blocks)     2097151
nofiles(descriptors) 2000


2. 각각의 항목별로 보고 싶다면
-t : time(seconds)            프로세스당 사용가능한 cpu타임   
-f : file(blocks=512 byte)    파일 하나의 최대 File size
-d : data(kbytes)             한 프로세스가 할당받을 수 있는 Data Segment의 최대 크기
-s : stack(kbytes)            한 프로세스가 할당받을 수 있는 Stack Segment의 최대 크기
-p : memory(kbytes)           한 프로세스가 할당받을 수 있는 물리적 메모리의 최대 크기
-c : coredump(blocks)         코어덤프 파일의 최대 File size
-n : nofiles(descriptors)     사용가능한 FD의 최대 개수
예) 최대파일size를 보고 싶다면 ulimit -f
file(blocks)         2097151

3. 값을 바꾸고 싶다면
예) fd개수는 100 -> 1024로
ulimit -n 1024
예) coredump 파일 size를 0으로 (즉, core가 안남게)
ulimit -c 0

Tip) 주의 사항
1) 아무옵션없이 ulimit를 하면 default로 -f 옵션을 먹습니다.
2) HP에서는 /bin/ulimit와 /usr/bin/ulimit가 있습니다.
  그냥 umlimit를 하시면 /bin/ulimit를 수행하는 경우가 많은데 정확한 정보를 보시려면 반드시 /usr/bin/ulimit를 사용하셔야 합니다.

'OS' 카테고리의 다른 글

HOW-TO Glance  (0) 2008.08.06
sed - 스트림 에디터  (0) 2008.07.16
netstat 의 status 별 설명  (0) 2008.07.14
특정 유저 process 찾아 한라인으로 죽이기  (0) 2008.07.14
성능분석 관련 솔라리스 모니터링  (0) 2008.07.14
Posted by 알 수 없는 사용자
|

netstat 의 status 별 설명

OS 2008. 7. 14. 17:09

netstat로 보면 local computer와 remote computer간의 tcp연결 상태를 확인할 수 있습니다.각 연결상태에 대한 설명 입니다.

LISTEN
서버 애플리케이션이 적재되어 수동적인 모드로 포트를 개설하였음을 의미. TCP는 연 결 요청이 수신 되기를 기다림

SYN-SENT
로컬 시스템의 클라이언트 애플리케이션이 원격 호스트에 능동적인 개설을 요청. TCP 는 Synchronize flag 를 설정한 시작 세그먼트를 전송 하였으며, 원격 시스템도 역시 Synchronize flag 를 설정한 시작 세그먼트로 응답할 것을 기다림.

SYN-RECEIVED
서버의 TCP가 원격 클라이언트로부터 Synchronize flag가 설정된 시작 세그먼트를 수 신하였고 자신의 시작 세그먼트로 응답 하였으며, 그 세그먼트에 대한 확인 메세지를 기다림.

ESTABLISHED
가상회선이 작동. 3단계 핸드셰이킹 과정이 완료되면 두 시스템은 이 상태에 들어감.

FIN-WAIT-1
로컬 애플리케이션은 가상 회선에 능동적인 종결을 요청하였으며, TCP는 Finish flag 가 설정된 종결 세그면트를 전송. 그러나 TCP는 아직도 원격 시스템이 세그먼트에 대 한 확인 메세지와 자신만의 종결 세그먼트로 응답하기를 기다림. 회선이 완전히 종결 될 때까지 원격 시스템으로부터 데이터는 수신하지만, 추가적인 데이터를 전송하지는 않음.

COLSE-WAIT
(FIN-WAIT-1 의 설명과 같이) Finish flag 가 설정된 종결 세그먼트가 수신되었고 로 컬 TCP는 그 세그먼트에 대한 확인 메세지를 송신 시스템에 전송함. 그러나 로컬 TCP 는 로컬 애플리케이션에서 작업을 종료하지않아 자신의 종결 세그먼트를 생성하지 못 함

FIN-WAIT-2
(FIN-WAIT-1 의 설명과 처럼) 로컬 TCP는 Finish flag 가 설정된 종결 세그먼트를 전 송하였으며, (WAIT-CLOSE 의 설명대로) 원격 시스템으로 부터 그 세그먼트에 대한 확 인 메세지를 수신함. 그러나 원격 애플리케이션이 아직 작업을 종료 하지 않아 원격 TCP가 자신의 종결 세그먼트를 생성하지 못하고 있는 상태임.

LAST-ACK
(FIN-WAIT-1의 설명과 같이) Finish flag 가 설정된 종결 세그먼트가 수신되었고, 로 컬 애플리케이션은 회선의 종결에 합의하여 자신도 종결을 요청함. 그 결과 로컬 TCP 는 Finish flag 가 설정된 자신의 종결 세그먼트를 전송 하였으며, 이 세그먼트에 대 한 확인 메세지가 수신되면 종결됨.

CLOSING
이 상태는 흔하지 않으며, 일반적으로 세그먼트가 네트워크에서 분실되었다는것을 나 타냄. 이런 경우 로컬 TCP는 (FIN-WAIT-1 의 설명과 같이) Finish flag 가 설정된 종 결 세그먼트를 전송 하고 (LAST-ACK 의 설명과 같이) 원격 시스템의 종결 세그먼트도 수신하였지만, FIN-WAIT-1 단계에서 전송한 세그먼트에 대한 확인 메세지가 수신되지 않은 상태임. 이 상태는 보통 확인 메세지가 전송 도중 분실되었다는 의미임.

TIME-WAIT
회선의 종결 절차가 완결되었으나 TCP 는 분실되었을지 모르는 느린 세그먼트를 위해 당분간 소켓을 열어 놓은 상태로 유지. 이 상태는 새로운 연결이 기존의 연결에서 사 용된 일련번호를 다시 사용하는 것을 막음. 원격 시스템이 종결하는 호스트로부터 더 이상 데이터를 수신할 가능성이 없으므로, 이 상태는 능동적인 종결을 요청한 호스트 에서만 나타남.

CLOSED
아무일도 발생하지 않음. 회선은 종결되었고, TCP는 그 가상 회선에 사용하였던 모든 자원을 놓아줌. 이 상태를 보여줄 수 있는 가상 회선이 없으므로 아무 일도 발생하지 않음.

Posted by 알 수 없는 사용자
|