반응형

 

 

 

우선 기본적으로 솔라리스 8에서 정확한 이유는 모르겠지만 jdk 1.7 이상이 설치가 잘 안됐다...

이유는 잘 모르지만 어쨋든.

 

SunStudio 11설치를 위해 1.6u45를 받아서 설치를 해봤더니 무수한 Exception 에러...

그렇다면 뭐가 문제인고 찾아보니.. 1.4.2 나 1.5 설치를 권장한단다. 1.6.10... 정도였나 12였나

어쨋든 그 이하 버전을 설치 해야 한다는데 안전하게 1.5 버전을 설치 했다.

 

 sparc jdk 설치를 하려면 32비트와 64비트가 있는데

 

jdk-1_5_0_22-solaris-sparc.tar.Z - 32비트

jdk-1_5_0_22-solaris-sparcv9.tar.Z - 64비트

 

두가지를 받아야 한다.

64비트 jdk 설치를 위해서는 32비트를 먼저 설치해야 하는데 처음에 Z 확장자가 뭔가해서 당황했지만..

예전 유닉스 압축 형태란다.

 

uncompress [파일명] 혹은 gzip 으로 평소에 압축해제 하듯이 압축을 풀면 잘 풀린다.

그 다음 나오는 SUNW 관련 패키지 들이 있는데

 

SUNW[version]rt

SUNW[version]dev

 

대충 설명을 읽어보니 두개는 필수 인 것 같다. 더불어 SUNW[version]cfg, SUNW[version]man 등도 같이 설치하자.

나머지 한개 패키지는 아마도 일본어 관련 패키지 인것 같다.

 

64비트 패키지도 설치

SUNW[version]rtx

SUNW[version]dvx

 

설치가 정상적으로 끝나면 /usr/jdk/jdk[version] 에 설치가 완료된다.

jdk 버전 확인도 잊지 말자

/usr/jdk/jdk[version]/bin/java -version

/usr/jdk/jdk[version]/bin/java -d64 -version

 

profile 등록

export JAVA_HOME=/usr/jdk/jdk[version]

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:.:$CLASSPATH

 

솔라리스 8에는 기본적으로 1.2.2 인가? 로 설치되어 있는데 /usr/bin 에 모든 사용자를 위해 링크를 변경해 놓자.

ln -s /usr/jdk/jdk[version]/bin/java /usr/bin/java

ln -s /usr/jdk/jdk[version]/bin/javac /usr/bin/javac

 

끝.

반응형
반응형

 

압축파일이다.

초기 유닉스 환경에서 사용되던 것인데 이번 Solaris studio 설치를 위해 jdk 설치를 하려 보니

jdk 압축이 .gz, Z 등으로 되어 있었다.

 

gz 이야 그렇다 치지만 Z는 뭔가 특이한건줄 알았더만 보통 압축파일 이었다... 허허허

기본적으로 압축과 압축해제는 아래와 같다.

 

compress [파일명]

uncompress [파일명]

 

하지만 기본적으로 gzip 으로 압축해제가 가능하다.

 

gzip -d [파일명]

gunzip [파일명]

 

 

 

 

반응형
반응형
< Solaris_10 Hostname 변경 >

 

Solaris 8~9는 전부 다, 10부터는 1~3까지만 등록

 

1. /etc/inet/hosts에 name 등록

2. /etc/nodenames에 name 등록

3. /etc/hostname.인터페이스에 name 등록

4. /etc/net/ticlts/hosts에 name 등록

5. /etc/net/ticotsord/hosts에 name 등록

[출처] Solaris Hostname 변경|작성자 KREUZ

■ 작업할 파일
(1) /etc/inet/hosts ( /etc/hosts 같은 파일)
(2) /etc/inet/ipnodes
(3) /etc/nodename (없는 파일은 생성해야함)
(4) /etc/hostname.e1000g0 (pcn0 일수도 있음)
(5) /etc/net/ticlts/hosts
(6) /etc/net/ticots/hosts
(7) /etc/net/ticotsord/hosts
(8) /etc/syslog.conf (mail 에러 메시지 관련 수정)
  

 
(1) /etc/inet/hosts

 [변경 전]

 # cat /etc/inet/hosts
::1 localhost
127.0.0.1 localhost
192.168.xxx.xxx unknown # Added by DHCP

 

 [변경 후]

 # cat /etc/inet/hosts
::1 localhost
127.0.0.1 localhost
192.168.xxx.xxx [HostName] # Added by DHCP

 
(2) /etc/inet/ipnodes

 # cat /etc/inet/ipnodes
::1 localhost
127.0.0.1 localhost
192.168.xxx.xxx [HostName] # Added by DHCP

 
(3) /etc/inet/nodename

 # cat /etc/nodename
cat: cannot open /etc/nodename

 # vi /etc/nodename
[HostName]

 
(4) /etc/inet/nodename

 # cat /etc/hostname.e1000g0

 

 # vi /etc/hostname.e1000g0
[HostName]

 # cat /etc/hostname.e1000g0
[HostName]

 
(5) /etc/net/ticlts/hosts

 # vi /etc/net/ticlts/hosts
[HostName] [HostName]

 
(6) /etc/net/ticots/hosts

 # vi /etc/net/ticots/hosts
[HostName] [HostName]

 
(7) /etc/net/ticotsord/hosts

 # vi /etc/net/ticotsord/hosts
[HostName] [HostName]

 

 

(8) 재부팅 후 Host 변경 및 네트워크 확인
# reboot
# ifconfig -a
 
반응형
반응형

 

출처 : http://parkya.tistory.com/469

 

nslookup 으로 정보수집 및 IP추적





통 해커들은 웹해킹을 수행하기 전에 정보를 수집 합니다.

그래서 기본적인 방화벽과 서버 보안설정은 필수인데 이것을 안하는 몇몇 기관들이 있어서 이번 시간에는 보안설정을 하는 방법에 대해서 알아 보도록 하겠습니다.




cmd 창에서 nslookup 명령어 입력 후 

server ns.도메인.ac.kr 을 입력해서 IP를 알아 낼 수 있습니다.




문제는 모대학의 경우 관리자가 보안설정을 허술하게 하여 문제가 될 수 있습니다.

물론 이런 정보만으로 해킹을 하는 것은 아니지만 적어도 그런 실마리를 조금이라도 주는 것은 보안적으로 좋지

않다는 것을 말씀 드리는 것입니다.



ls -t 도메인.ac.kr  을 입력하자 이렇게 서버들의 아이피 정보가 쫘~악 뿌려줍니다.

언뜻 보기엔 이걸로 뭘 하나 싶지만.. card 라던지 자세히 살펴보면 무슨업무를 수행하는 서버의 아이피 인지

유추해 낼 수 있다는 점은 자칫 해킹사고로 이어질 수도 있습니다.






특히 haksa (학사) 라고 표기되는 이 서버는 언뜻 생각해 봐도 아마 학사관리 서버.. 즉 성적관리를 담당하는

서버의 ip정보를 손에 넣을 수 있었습니다.


해킹은 크게 3가지 단계로 진행 됩니다.

(1) 정보수집 -> (2) 공격 -> (3) 사후처리: 로그삭제,백도어 설치 


여기서 첫번째 단계인 정보수집에 해당하는 것이 바로 이런 공격 대상의 서버의 아이피 정보를 수집하는

것도 포함 되는 것입니다.


이것을 막기 위해서는 보안관리자가 해당 서버의 도메인 속성에서 영역전송이 초기에는 '아무서버로 전송'

으로 되어 있는데 이것을 영역전송(이름서버 탭에 나열된 서버로만) 으로 변경 하거나 보조 DNS가 있을 경우

그쪽으로 체크를 해주어야 합니다.


이렇게 클릭한번만 해줘도 되는것은 몰라서, 또는 귀찮아서 안하게 되면 이렇게 해커의 표적이 되기 십상입니다.


윈도우7 에서 안되는 경우에는 

set type=all 이라고 옵션을 먹이고 하면 보이는 경우가 있었습니다.







* NMS (Network Management System)  에 대해서 알아 보겠습니다.

NMS는 네트워크 관리시스템을 말하며, 망을 관리하는 시스템 입니다. 대표적인 프로그램으로 솔라윈드(Solawind)가 있습니다. 


NMS는 트레이드 오프가 적용 됩니다.

즉, 편리성이 높아지고 보안성은 낮아지는 것 이런것이 대표적인 트레이드 오프 입니다.


NMS를 하기 위해서는 먼저 SNMP Protocol을 설치 해야 합니다.






- Windows 구성 요소 마법사 에서 '관리 및 모니터링 도구'를 클릭 합니다.





- SNMP(단순 네트워크 관리 프로토콜)을 체크해 주고 확인을 눌러 줍니다.





저기 윈도우 아이콘의 플러스를 눌러주면 해당 아이피의 컴퓨터의 정보를 상세히 볼 수 있습니다.

계정정보 부터 하드웨어에 대한 정보등 해당 PC의 거의 모든 정보를 수집할 수 있습니다.



* VM웨어로 실험을 할때에는 한쪽 컴퓨터에는 솔라윈드가 설치 되어 있어야 하며 다른쪽 컴퓨터는 SNMP Protocol 일 위에 설정처럼 잡아줘야 합니다.


다음으로 통신을 진행하기 위한 보안조건 2가지를 알아보도록 하겠습니다.


(1) CS(Community String)값이 일치 해야 합니다. 

기본값은 보통 public (퍼블릭) 으로 설치 되어 있습니다. 문제는 아마 전세계의 60%가 이렇게 설정 되어 있을

거라는 점입니다. 그러나 보안상 퍼블릭을 사용하면 안됩니다. 다른 CS( Community String ) 값을 사용 해야 합니다. 


(2) NMS System의 IP 주소를 지정해서 사용해야 합니다.



★ 트레이드 오프관계: 편의성이 높아지면, 보안성이 낮아 집니다.


★ UDP : 161번으로 통신을 합니다.






- 서비스에서 SNMP Service 를 클릭합니다.






- 여기 보시면 public가 기본적으로 설정 되어 있는 것을 알 수 있습니다. 이것을 

바꾸어서 설정 해 주셔야 합니다.


- 다음 호스트로부터 SNMP 패킷 받아 들이기 를 클릭 합니다.




원하는 값을 입력 합니다. 물론 여기에 설정하는 CS값(커뮤니티 스트링) 값은 NMS가 설치

되어 있는 관리자의 컴퓨터의 CS값과 일치해야 합니다.

그래서 일종의 암호의 개념으로 볼 수가 있습니다.


그후 솔라윈드로 확인해 보면 설정된 값의 시스템 정보만 확인 할 수 있습니다.








[ ICMP의 2가지 기능 ]


(1) 오류보고 (2) 질의 



[ NETSTAT 정보 ] 


netstat -na

netstat -ra  의 차이를 구별해서 알아야 합니다.


netstat는 네트워크 포트(TCP,UDP) 상태를 확인함으로서 바이러스나 해킹여부를 진단 할 수가 있죠


netstat  의 간단한 옵션을 알아보도록 하겠습니다.


-a :컴퓨터에서 수신되어 활성화 되어 있는 모든 TCP 및 UDP 포트를 표시 해줍니다

-n : 현재 다른 PC와 연결되어 있는 포트번호를 확인 할 수 있습니다 ( IP주소로 화면을 출력 )


- r : 라우팅 테이블 확인 및 연결(Connection) 되어 있는 포트번호를 확인 합니다.

- e : 랜카드에서 송수신한 패킷의 용향 및 종류를 확인합니다. -s 와 같이 사용 합니다.

- s : IP , ICMP, TCP, UDP 프로토콜의 상태를 확인 합니다.





[ 로드밸런서 (Load Balancer) ] 


: 네트워크 트래픽 Packet 들로부터 Application Port 번호를 해석하여 , Application 트래픽 부하 분산 및 우선 

순위를 관리자가 결정하고, 통제 처리할 수 있도록 해서 전체 시스템의 성능과 속도를 향상 시키는 네트워크 

장비 입니다.


[ 로드밸런싱 ]


: 클러스트의 한종류 이며, 1대의 서버 시스템에 대규모로 들어오는 요청을 여러대의 서버로 분산 처리하여

서버부하 및 트래픽 증가등의 단일서버로 인하여 발생 될 수 있는 문제점을 해결하기 위한 '부하분산서비스' 

입니다.


반응형
반응형

 

 

참고는 여러 블로그를 참고했슴

 

우선 Solaris에서 랜카드 종류마다 약간씩 이름이 다른데 아래와 같다.

 

Cpu - SPAC

scmin - 1000 baseT

bge    - 1000 baseT 

ce      - 1000 baseT

ge      - 1000 baseSX

hme    - 100  bastT

gfe     - 1000 baseT

 

Cpu - X86

e1000g - 1000 baseT

elx      - 100 baseT

pcn     - 1000/100 baseT

 

1. 우선 호스트 이름을 바꾸려면 /etc/hosts 파일을 수정해야 한다.

etc/hosts 파일은 /etc/inet/hosts 파일에 링크되어 있으며 처음에 아마 ReadOnly 일꺼니깐 chmod로 변환해서 수정해주면 되겠다.

 

맨 마지막 줄에 호스트 고유 정보를 추가해주면 되겠다. 구분자는 tab 키이니 유념바람.

::1    localhost

127.0.0.1        localhost

[호스트 IP]    [호스트 이름]    loghost

 

2. 그 다음 게이트 웨이 주소 기본 라우팅 주소를 설정해줘야 한다.

/etc/defaultrouter 에 해당 정보를 기록해주면 된다. 없으면 만들면 된다. 딱 한줄만 넣어주면 됨.

[기본 라우팅 주소]

3. 그 다음 넷마스크를 설정해주자.

/etc/netmasks의 맨 마지막 줄에 설정해주면 되는데

해당 IP 주소의 0 주소와 넷마스크를 입력

[해당 아이피 주소 4번째 자리에 xxx.xxx.xxx.0] [넷 마스크]

 

4. 그 다음 DNS로 사용할 nameserver 정보를 입력.

/etc/resolv.conf

nameserver 168.126.63.1

nameserver 168.126.63.2

domain kns.kornet.net

 

5. 마지막 dns 설정 /etc/nsswitch.conf 에서 host 엔트리에 dns를 추가해야 한다.

hosts : file dns

 

 

자 이제 추가로 하드웨어 네트워크 카드에 ifconfig 정보를 바인딩 해주는 방법인데

위에 했을시 잘 되면 추가로 설정할 필요는 없고 추가적인 팁으로 알아놓자.

 

plumb는 커널에 특정 네트워크 카드를 연결시킬때 사용한다. unplumb는 연결 해제시 사용.

ifconfig e1000g0 unplumb

ifconfig e1000g0 plumb

 

up을 이용하면 e1000g0 인터페이스에 특정 ip주소와 netmask를 올려준다.

ifconfig e1000g0 [호스트 IP 주소] netmask [넷마스크 주소] up

 

인터페이스가 특정 ip와 서브넷을 물고 있으려면 특정 파일을 수정해 줘야 한다.

파일 수정을 안하면 Reboot시 설정한 ip 주소가 사라지니 유의해야 한다.

 

1. vi /etc/hostname.[인터페이스명] 파일에 호스트 ip 주소 한줄 추가해주면 된다.

[호스트 이름]

 

라우팅 테이블을 확인해보자

 

netstat -nr

default라고 되있는 부분이 게이트 웨이 주소다. 게이트 웨이 추가 및 삭제는

route add[delete] defualt xxx.xxx.xxx.xxx

 

네트워크 관련 설정 파일을 다시 읽어 들이려면

svcadm -v restart svc:/milestone/network:default 네트워크 서비스 재시작

svcadm restart network/physical

 

반응형
반응형

 

솔라리스 10 u10의 경우 telnet과 ssh는 자동으로 설치된다.

하지만 처음에는 root 계정으로 터미널에 접속할 수 없는데 그 이유는 보안문제인지... 어쨋든

 

ssh와 telnet으로 root를 접속하고자 하면 아래의 3가지를 수정해야 한다.

 

---------------------------------------------------------------------------

참고 : http://wooriwil.blog.me/20105449038

 

1. [SSH & sFTP]

# vi /etc/ssh/sshd_config

132 PermitRootLogin yes     // no 에서 yes로 변경

#svcadm restart ssh

 

2. [Telnet]

# vi /etc/default/login

18 #CONSOLE=/dev/console // 주석 처리

 

3. [FTP]

# vi /etc/ftpd/ftpusers

5 #root                     // 주석처리

 

---------------------------------------------------------------------------

 

그 다음은 gcc를 설치해야 한다.

gcc는 libiconv 에 dependency가 걸려 있어서 libiconv 먼저 설치해야 한다.

 

해당 사이트에서 관련 패키지 들을 받을 수 있다. (가입해야 됨)

www.sunfreeware.com

 

Solaris 10의 경우

intel의 경우는 x86/Soraris

Spac의 경우 SPAC/Soraris

 

구분되어 있으니 잘 확인하고 받자.

 

gcc를 누르면 Dependencies의 libiconv를 누르고 해당 패키지 먼저 다운 받자.

뭐 시기 마다 다르니.. 일단 이 포스트를 쓸때는 libiconv-1.14-sol10-x86-local.gz 이게 최신임.

 

운영체제에서 직접 받던 받아서 ftp로 올리던...

어쨋든 적당한 위치에서 압축을 푼다.

gzip -d libiconv-1.14-sol10-x86-local.gz 또는 gunzip libiconv-1.14-sol10-x86-local.gz

 

그 다음 설치..

pkgadd -d libiconv-1.14-sol10-x86-local

 

엔터랑 y 잘 눌러서 설치 한다.

만약에 패키지를 한곳에 모으고 싶으면 /var/spool/pkg로 복사해서 설치할 것.

 

그다음 gcc를 받아 압축을 풀고 설치 한다. gcc-3.4.6-sol10-x86-local.gz

gzip -d gcc-3.4.6-sol10-x86-local.gz

pkgadd -d gcc-3.4.6-sol10-x86-local

 

만약 gcc를 설치했을 때 이상이 있으면 Solaris 10 설치 CD 패키지에

SUNWarc라는 패키지를 재설치 해본다. 위치는 cdrom/sol_10_811_x86/Solaris_10/Product/SUNWarc 임.

해당 패키지를 /var/spool/pkg로 옮긴 뒤

pkgadd -d /var/spool/pkg로 재설치. 잘 되어 있으면 안해도 됨.

 

자 그 다음 gcc의 환경 변수를 설정할 차례다.

/etc/profile에 PATH를 등록.

 

PATH=/usr/local/bin:$PATH 를 추가해주고. env로 확인해봤을시 현재 디렉토리가 PATH로 안 잡혀 있으면 . 추가 해줄것

ln -s /usr/local/bin /usr/bin/gcc 로 모든 사용자가 gcc를 사용할 수 있게 링크 추가.

 

마지막으로 설치가 잘 되었는지 확인해보려면 간단하게 하나 짜서 컴파일 해보면 된다.

#gcc

gcc : no input files

이렇게 나오면 정상이라고 할 수 있음.

 

---------------------------------------------------------------------------------------

자 이제 네트워크를 설정해보자.

해당 부분은 다음 글로 대체!

 

 

 

반응형
반응형

 

 

윈도우에서 마우스 우 클릭으로 Context Menu에 현재 폴더에서 cmd 창을 띄우는 방법 3가지를 소개합니다.

 

1. Shift + 우클릭으로 "여기서 명령 창 열기" 메뉴 이용. (윈도우 기본 제공)

2. 폴더 아이콘을 우 클릭하여 해당 폴더의 위치에서 관리자 cmd 콘솔 창 띄우기.(사용자 특별 설정)

3. 바탕화면에서 우 클릭하여 "c:\user\유저명\Desktop"에서 관리자 cmd 콘솔 창 띄우기.(사용자 특별 설정)

 

 

두 가지 방법 모두 regedit 부분을 수정해야 함.

우선 관리자 권한으로 띄우느냐 마느냐에 대한 부분은 선택임

 

 

1. Shift + 우클릭으로 "여기서 명령 창 여기" 메뉴 이용

윈도우에서 기본적으로 제공하는 기능입니다.

하지만 굳이 shift를 누르지 않아도 작동하게 하고자 한다면 [HKEY_CLASSES_ROOT\Directory\Backgroud\shell\cmd]의 값 중

Extended 라는 값이 있는데 이 값을 제거해주면 굳이 Shift 안 눌러도 됩니다.

 

 

2. 특정 폴더 우 클릭으로 (관리자 권환)으로 콘솔 창 띄우기

2-1. 특정 폴더 우 클릭 후 관리자 권한으로 띄우기 

[HKEY_CLASSES_ROOT\Folder\shell]에서 새로 만들기로 runas 키값을 만들고 그 하위로 command 키 값도 만듭시다.

runas를 클릭하고 기본값의 데이터를 "현 위치에서 관리자 콘솔창 띄우기" 라고 입력해 놓고 (자기 맘대로 입력하셈)

command에서 기본 값은 "c:\windows\system32\cmd.exe /s /k pushd "%V" 라고 입력

 

2-2. 특정 폴더 우 클릭 후 일반 사용자 권환으로 띄우기

[HKEY_CLASSES_ROOT\Folder\shell]에서 "현 위치에서 콘솔창 띄우기" 라고 키값을 만들고 그 하위로 command 키 값도 만듭시다.

그 다음 command에서 기본 값을 "c:\windows\system32\cmd.exe /s /k pushd "%V" 라고 입력

 

차이는 runas를 만들고 안 만들고의 차이입니다. (runas 는 관리자 UAC 창이 띄고 안 뜨고의 차이 인듯)

 

 

3. 바탕 화면에서 우 클릭하여 (관리자 권한)으로 콘솔 창 띄우기

3-1. 바탕 화면에서 우 클릭으로 관리자 권한으로 띄우기

[HKEY_CLASSES_ROOT\Directory\Backgroud\shell]에서 새로 만들기로 runas 키값을 만들고 그 하위로 command 키 값도 만듬.

runas를 클릭하고 기본값의 데이터를 "현 위치에서 관리자 콘솔창 띄우기" 라고 입력해 놓고 (자기 맘대로 입력하셈)

command에서 기본 값은 "c:\windows\system32\cmd.exe /s /k pushd "%V" 라고 입력

 

2-2. 바탕 화면에서 우 클릭 후 일반 사용자 권환으로 띄우기

[HKEY_CLASSES_ROOT\Directory\Backgroud\shell]에서 "현 위치에서 콘솔창 띄우기" 라고 키값을 만들고 그 하위로 command 키 값도 만듬.

그 다음 command에서 기본 값을 "c:\windows\system32\cmd.exe /s /k pushd "%V" 라고 입력

 

특정 폴더에서 만들기와 차이는 키 값의 생성 위치 입니다. Folder 냐 Directory 냐...

 

 

 

 

반응형
반응형

굉장히 도움이 될 것 같아서 퍼옴..

출처 : http://cafe.daum.net/oddtip/Jxkw/94?docid=1CBe5Jxkw9420081218175643]

 

AIX, HP-UX, SOLARIS 특징 및 명령어 비교
     
Directory AIX HP-UX SOLARIS
Root filesystem / {/dev/hd4} / {/dev/vg00/lvol1} / {/dev/vx/dsk/rootvol}
Home Directory /home {/dev/hd1} /home {/dev/vg00/lvol4} /export/home
      /dev/vx/dsk/home}
  /tmp {/dev/hd3} /tmp {/dev/vg00/lvol6} /tmp
      /dev/vx/dsk/swapvol}
  /usr {/dev/hd2} /usr {/dev/vg00/lvol7} /usr
  /var {/dev/hd9var} /var {/dev/vg00/lvol8} /var
Sample configuration files - /usr/newconfig  
User Accounts AIX HP-UX Solaris
Password files /etc/passwd /etc/passwd /etc/passwd
  /etc/security/passwd /tcb/files/auth/r/root /etc/shadow
Groups file /etc/group /etc/group /etc/group
  /etc/security/group /etc/logingroup  
Maximum # of user ID 4294967295 2147483647 2147483647
Allow/Deny remote login /etc/security/user /etc/securetty /etc/default/login
  {rlogin=true} {console} {CONSOLE=/dev/console}
User nobody's id # 4294967294 -2 60001 & 65534(nobody4)
Group nobody's id # 4294967294 -2(nogroup) 60002 & 65534(nogroup)
Recover root password boot from CD/Tape ISL>hpux -is boot cdrom -s
  Installation/Maintenance vi /tcb/files/auth/r/root mount /dev/c0t0d0s0 /mnt
  Start Limited Shell vi /etc/shadow vi /mnt/etc/shadow
  getrootfs hdisk0    
  vi /etc/security/passwd    
Create new user mkuser useradd useradd
Delete user rmuser userdel userdel
List users lsuser -f ALL logins logins
Modify user account chuser -a usermod usermod
General Commands AIX HP-UX Solaris
Unique host ID hostid uname -i hostid
Administrator smit sam admintool
Performance monitor top top top
  monitor glance  
System activity reporter sar sar sar
Virtual Memory statistics vmstat vmstat vmstat
I/O statistics iostat iostat iostat
Error logs alog -o -t boot dmesg dmesg
  errpt    
Physical RAM 1M TB 4TB 16TB
Shared Memory 64K TB 8TB  
Process Data Space 384K TB 4TB  
Swap device /dev/hd6 /dev/vg00/lvol2 /dev/vx/dsk/swapvol
Swap file type /etc/swapspaces swap swap
Display swap size lsps -a swapinfo -a swap -l
Activate Swap swapon -a swapon -a swap -a
Printers AIX HP-UX Solaris
Printer Queues /etc/qconfig /etc/lp/interface/* /etc/lp/interfaces/*
Stop LP stopsrc -s lpd lpshut /usr/lib/lp/lpshut
Start LP startsrc -s lpd lpsched /usr/lib/lp/lpsched
Submit print jobs enq lp lp
  lp   lpr
  lpr    
  qprt    
LP statistics enq -A lpstat lpstat
  lpq    
  lpstat    
  qchk    
Remove print jobs cancel cancel cancel
  lprm   lprm
  qcan    
  enq -x    
Add printer queue smit mkpq lpadmin -p pq lpadmin -p pq
Remove Printer queue smit rmpq lpadmin -x pq lpadmin -x pq
Make default printer export LPDEST="pq" lpadmin -d pq lpadmin -d pq
TCP/IP AIX HP-UX Solaris
Network IP configuration lsattr -E -l inet0 /etc/rc.config.d/netconf /etc/hostname.*
      /etc/inet/*
      /etc/defaultrouter
Hosts IP addresses /etc/hosts /etc/hosts /etc/inet/hosts
Name service switch /etc/netsvc.conf /etc/nsswitch.conf /etc/nsswitch.conf
Network parameters no -a ndd -h ndd /dev/[tcp|ip]
Routing daemon gated gated in.routed
NIC Configurations ifconfig -a lanscan -v ifconfig -a
Secondary IP Address ifconfig en0 alias IP ifconfig lan0:1 IP ifconfig hme0:1 IP up
       
Login prompt HERALD @ telnetd -b /etc/issue BANNER @
  /etc/security/login.cfg   /etc/default/telnetd
Increase the # of pseudo-terminals odmget -q "attribute=num and uniquetype=pty/pty/pty" PdAt | sed "s/0-64/0-512/" | rebuild your kernel with these new values NPTY=# {/etc/system}
  odmchange -q "attribute=num and uniquetype=pty/pty/pty" -o PdAt NSTRPY=# set pt_cnt = # {SYSV}
      set npty = # {BSD}
  chdev -l pty0 -anum=256 -P reboot  
  reboot   {/etc/iu.ap}
    insf -d ptys -n # ptsl 0 # ldterm ttcompat
    insf -d ptym -n #  
    insf -d pts -s # -e -v halt
      boot -r
Maximum # of ptys 512 {MAXUSERS} 176 {BSD}
      3000 {SYSV}
Remote Shell remsh remsh rsh
  rsh    
YP/NIS service binder /usr/lib/netsvc/yp/ypbind /usr/lib/netsvc/yp/ypbind /usr/lib/netsvc/yp/ypbind
System Files AIX HP-UX Solaris
NFS exported /etc/exports /etc/exports /etc/dfs/dfstab
      /etc/dfs/sharetab
NFS Client mounted directories /etc/xtab /etc/xtab /etc/rmtab
Max File System 128 GB 128 GB 1 TB
Max File Size 64 GB 128 GB 1 TB
Max # File Descriptors 64 K 60~ K 64 K
DISK/LVM Commands AIX HP-UX:Disk &Filesystem SOLARIS
Filesystem table /etc/filesystems /etc/fstab /etc/vfstab
Free disk blocks df -k bdf df -k
Device listing lsdev -C /sbin/ioscan sysdef
Disk information bootinfo -s hdisk# diskinfo /dev/rdsk/c#t#d# format -d c#t#d#
      format>current
      format>inquiry
Disk Label lspv -l hdisk# pvdisplay -v /dev/dsk/C#t#d# prtvtoc
LVM Concepts Partition logical extents sub disk
  Volume logical volume Volume
      Plex
  Volume group volume group disk group
Journal Filesystem type jfs vxfs vxfs
Default volume group /dev/rootvg /dev/vg00 /dev/vx/dsk/rootdg
Display volume group lsvg -l rootvg vgdisplay -v vg00 vxprint -l -g rootdg
Modify physical volume chpv pvchange  
Prepare physical disk mkdev -c disk -l hdisk# pvcreate vxdiskadd
List physical volume lspv pvdisplay vxprint -dl
Remove disk from volume group reducevg vgreduce vxdg rmdisk
Move logical volumes to another physical volumes migratepv pvmove vxassist move
Create volume group mkvg vgcreate vxdg init
Remove volume group   vgremove  
Volume group availability chvg vgchange  
  varyonvg    
  varyoffvg    
Restore volume group   vgcfgrestore  
Exports volume group exportvg vgexport vxdg deport
Imports volume group importvg vgimport vxdg import
Volume group listing lsvg vgscan  
Change logical volume characteristics chlv lvchange vxedit set
List logical volume lslv lvdisplay vxprint -vl
Make logical volume mklv lvcreate vxassist make
Extend logical volume extendlv lvextend vxassist growto
Reduce logical volume AIX reduce LV lvreduce vxassist shrinkto
Remove logical volume rmlv lvremove vxedit rm
Prepare boot volumes bootlist -m normal lvlnboot vxbootsetup
Remove boot volumes   lvrmboot  
Extend File system chfs -a size=# extendfs -F vxfs -s # vxva
    fsadm -F vxfs -b {LE * 1024} mkfs -M
Reduce/Split mirrors rmlvcopy lvsplit  
Merge mirrors   lvmerge  
Create mirrors mklv -c 2 lvcreate -m 1 vxassist mirror
Add mirrors mklvcopy lv 2 lvextend -m 1  
Create striped volumes mklv -u 3 -S 64K lvcreate -i 3 -I 64 vxassist make vol 100mb layout=raid5
System recovery tape mksysb -i /dev/rmt0 /opt/ignite/bin/make_recovery  
Backup savevg -i rootvg fbackup ufsdump
Restore restvg frecover ufsrestore
MISC AIX HP-UX SOLARIS
Startup script /etc/rc /sbin/rc /sbin/init.d
Kernel /usr/lib/boot/unix_up /stand/vmunix /kernel/genunix
Kernel Parameters lsattr -E -l sys0 kmtune sysdef- i
    kmsystem  
Reconfigure the kernel   cd /stand/build vi /etc/system
  chdev -l sys0 -a /usr/lbin/sysadm/system_prep -v -s system reboot
    vi system  
    mk_kernel -s system  
    cd /stand  
Reconfigure the kernel   mv system system.prev  
    mv vmunix vmunix.prev  
    mv dlkm dlkm.prev  
    mv ./build/system system  
    kmupdate /stand/build  
       
List modules   kmadmin -s modinfo
Load module   kmadmin -L modload
Unload module   kmadmin -U modunload
Initialize system install_assist set_parms initial sys-unconfig
Physical RAM bootinfo -r grep -i Physical /var/adm/syslog/syslog.log prtconf
Kernel Bits getconf WORD_BIT getconf KERNEL_BITS isainfo -kv
Crash utility crash crashutil crash
Machine model uname -m model uname -imp
  bootinfo -m uname -m  
OS Level oslevel uname -r uname -r
Run Level who -r who -r who -r
Core dump files /var/adm/ras /var/adm/crash /var/crash/`uname -n`
Boot single user Key on service mode/F4 ISL>hpux -iS ok boot -s
  Boot from CD/Tape    
  Select Maintenance    
  Limited function Shell    
Maintenance mode   ISL>hpux -lm ok boot -as
Interrupt Key   control-B Stop-A
Return to console   co ok go
Software AIX HP-UX SOLARIS
Install Software installp -a swinstall pkgadd
Uninstall software installp -u swremove pkgrm
List installed software lslpp -L all swlist pkginfo
Verify installed software lppchk -v swlist -l fileset -a state pkginfo -i
      pkginfo -p
List all files lslpp -f fileset swlist -l file fileset pkgchk -l package
List installed patches instfix -i swlist -l patch patchadd -p
    what /stand/vmunix  
Package owner lslpp -w path swlist -l file | grep path pkgchk -l -p path
SW Directory /usr/lpp /var/adm/sw/ /var/sadm
Devices AIX HP-UX SOLARIS
Devices /dev /dev /devices
Install devices for attached peripherals cfgmgr -v insf -e drvconfig
      devlinks
      disks
      tapes
      ports
Remove device rmdev -l rmsf rem_drv
Device drivers lscfg lsdev prtconf -D
CPU lsdev -Cc processor ioscan -fnC processor psrinfo -v
List Terminal lsdev -Cc tty ioscan -fnC tty pmadm -l
Diagnostics diag stm /usr/platform/`uname -m`/
      sbin/prtdiag
      ok test-all
      /opt/SUNWvts/bin/sunvts
Whole Disk /dev/hdisk# /dev/dsk/c#t#d0 /dev/c#t#d0s2
CDROM /dev/cd0 /dev/dsk/c#t2d0 /dev/dsk/c#t6d0s2
CDROM file type cdrfs cdfs hsfs
Rewinding tape drive /dev/rmt0 /dev/rmt/0m /dev/rmt/0
Non-rewinding tape drive /dev/rmt0.1 /dev/rmt/0mn /dev/rmt/0n
Floppy drive /dev/rfd0 - /dev/diskette
Links AIX HP-UX SOLARIS
FAQ AIX-FAQ HP-UX FAQ Solaris 2 FAQ
Online Manual AIX 4.3 Books HP-UX 11.00 Collection Solaris 7 Documentation
Technical Support RS/6000 TechSupport IT Resource Center SunSolve
Phone Number 1-800-CALL-AIX 1-800-633-3600 1-800-USA-4SUN
Free Software Bull HP-UX Ports Sun Freeware
Certification www.ibm.com education.hp.com suned.sun.com

 

잘 알아놓고 두고두고 써야겠당

 

 

 

반응형

'OS > Common' 카테고리의 다른 글

유닉스 언어 설정 확인 및 변경  (0) 2013.10.02
Z 확장자 압축해제  (0) 2013.07.09
해당 바이너리의 비트 확인하기  (0) 2012.05.21
ftp 사용법 [명령어]  (0) 2011.10.20
Tar 와 Gzip Bzip2사용법  (0) 2011.10.20
반응형

 

AIX에서 사용하는 컴파일러는 기본적으로 xl c/C 인데

xlc는 c Compiler이며 xlC는 C++ Compiler가 되겠다.

 

리눅스는 gcc/g++ , HP-UX는 cc/aCC 와 매칭되는 컴파일러들인데

해당 시스템에 해당 컴파일러가 어디에 위치하고 설치되어 있는데 그리고 각각 어떠한 Fileset을 가지고 있는지 알아보자

 

우선 일반적으로 AIX 시스템에는 /usr/bin에 해당 컴파일러들의 심볼릭 링크가 걸려있는데 xlc, xlC 등의 실행은 이곳에서도 실행 시킬 수 있다.

문제는 각각 C/C++ Compiler Fileset이 설치가 되어 있는지 안 되어 있는지 확인하고자 할 때 어떻게 해야 하냐는 건데

 

우선 일반적으로 바이너리가 설치되는 위치를 살펴보자.

 

/usr/vac/bin     <- XL C Compiler Binary 설치 위치

/usr/vacpp/bin  <- XL C++ Compiler Binary 설치 위치

 

각각의 디렉토리에 가보면 xlc, xlc_r, xlC, xlC_r 부터 시작해서 뭐 이상한 바이너리가 잔뜩 있는데...

ls -la 해서 가만히 살펴보면 심볼릭 링크가 되어 있는 것을 따라가다 보면 신기하게도 죄다 xlc로 귀결된다.

어떤 바이너리를 실행시켜도 결국에는 xlc가 실행된다는건데, 이는 AIX의 XL 컴파일러가 내부적으로 실행 시킨 바이너리 파일을 기준으로

다른 전처리 옵션을 타는게 아닌가 싶은데.. 뭐 자세한 동작 원리는 아직 잘 모르겠다.

 

우선적으로 AIX 시스템의 경우 /usr/lpp에 보면 xlC 부분도 있긴 한데 이는 SW Directory로 해당 소프트웨어의 Description을 확인할 수 있는 뭐... 그런거 같다. 정확하게는 이것도 아직 공부 중임. 어쨋거나 AIX에서 소프트웨어가 설치될때 installp 를 사용하는데 이를 사용하여 설치된 소프트웨어는 /usr/lpp에서 관리된다는 사실 알아놓으면 좋을꺼 깥다.

 

그렇다면 IBM 공식 홈페이지에 적혀 있는 각각 Compiler의 Fileset을 살펴보자

각각의 Fileset이 현재 AIX 서버 머신에 설치되어 있는지 확인하고자 한다면

 

lslpp -la | grep [fileset 명] 을 입력해주면 되겠다.

 

(XL C/C++ V8.0 for AIX 기준)

 

XL C compiler filesets

The following filesets are included in the XL C compiler.

Table 3. XL C compiler filesets
Fileset name Fileset description
vac.C IBM XL C compiler
vac.include IBM XL C compiler include files
vac.man.LANG
Note:
LANG is one of: en_US, EN_US, ja_JP, Ja_JP, JA_JP, zh_CN, Zh_CN, ZH_CN.
IBM XL C compiler manual pages
vac.lib IBM XL C compiler libraries
vac.aix50.lib IBM XL C compiler libraries for AIX 5
vac.lic IBM XL C license files
Note:
For licensed customers only
vac.msg.LANG.C
Note:
LANG is one of: en_US, EN_US, ja_JP, Ja_JP, JA_JP, zh_CN, ZH_CN.
IBM XL C compiler messages

 

XL C++ compiler filesets

The following filesets are included in the XL C/C++ compiler.

Note:
All of the filesets required for the XL C compiler, except vac.ndi and vac.licAgreement, are also required for the XL C/C++ compiler.

Table 4. XL C/C++ compiler filesets
Fileset name Fileset description
vacpp.cmp.aix50.lib IBM XL C/C++ libraries for AIX 5.1, 5.2 and 5.3
vacpp.cmp.aix50.tools IBM XL C/C++ tools for AIX 5.1, 5.2 and 5.3
vacpp.cmp.core IBM XL C/C++ compiler
vacpp.cmp.include IBM XL C/C++ compiler include files
vacpp.cmp.lib IBM XL C/C++ libraries
vacpp.cmp.rte IBM XL C/C++ compiler application runtime
vacpp.cmp.tools IBM XL C/C++ tools
vacpp.lic IBM XL C/C++ license files
vacpp.licAgreement IBM XL C++ electronic license agreement files
vacpp.memdbg.aix50.lib IBM XL C/C++ user heap/memory debug AIX 5.1, 5.2 and 5.3 libraries
vacpp.memdbg.aix50.rte IBM XL C/C++ user heap/memory debug AIX 5.1, 5.2 and 5.3 runtime
vacpp.memdbg.lib IBM XL C/C++ user heap and memory debugger static library
vacpp.memdbg.rte IBM XL C/C++ user heap and memory debugger runtime
vacpp.msg.LANG.cmp.core
Note:
LANG is one of: en_US, EN_US, ja_JP, Ja_JP, JA_JP, zh_CN, ZH_CN.
IBM XL C/C++ compiler messages
vacpp.msg.LANG.cmp.tools
Note:
LANG is one of: en_US, EN_US, ja_JP, Ja_JP, JA_JP, zh_CN, ZH_CN.
IBM XL C/C++ tools messages
vacpp.man.LANG
Note:
LANG is one of: en_US, EN_US, ja_JP, Ja_JP, JA_JP, zh_CN, ZH_CN.
IBM XL C/C++ compiler manual pages

C++ runtime filesets

The following filesets are included in the IBM XL C/C++ Enterprise Edition V8.0 for AIX compiler installation package, and must be installed with the compiler.

Table 5. C++ runtime filesets
Fileset name Fileset description
xlC.adt.include C Set ++ application development toolkit
xlC.aix50.rte C Set ++ runtime for AIX 5.1, 5.2 and 5.3
xlC.msg.LANG.rte
Note:
LANG is one of: en_US, ja_JP, Ja_JP.
C Set ++ runtime messages
xlC.rte C Set ++ runtime

 

 

 

반응형

'OS > AIX::' 카테고리의 다른 글

AIX xlc 컴파일러 비트 설정  (0) 2014.01.09
AIX의 2가지의 프로그래밍 모델  (0) 2014.01.09
AIX Thread Dump 분석 방법  (0) 2012.08.22
AIX 라이브러리 버전 확인  (0) 2012.07.12
AIX 컴파일 정보  (0) 2011.10.05
반응형

이번엔 AIX... Thread Dump 분석 방법이다.

최근에 발견한 최고의 포스팅.

 

http://blog.naver.com/bumsukoh/110114573021

 

 

안녕하세요. 이번에는 AIX에서 제공하는 Thread 모니터링 관련 툴을 소개하겠습니다.

AIX에서 가장 유용하게 사용할 수 있는 프로세스와 Thread 모니터링 툴로는 ps 명령어입니다.

"왠 ps 명령어 !" 라고 하실 수 있을텐데요.

 

사실 ps 명령어는 생각보다 굉장히 많은 정보를 제공하고 있습니다. man page를 보시면 더욱 실남나게 느기실텐데요.

그래도 ps 하면 가장 많이 사용하는 명령어가 "ps -ef" 정도겠죠.

 

AIX에서는 ps 명령어를 통해 Thread 레벨의 정보를 확인할 수 있는 기능을 제공합니다.

Solaris의 prstat이나 HP-UX의 glance처럼 막강하지는 않지만 나름대로 프로세스의 Thread레벨에 대한 정보를 확인하는데는 유용하게 사용하실 수 있습니다.

 

ps를 통한 Thread 레벨 모니터링 방법은 다음과 같습니다.

# ps -mp [프로세스 IDs] -o THREAD

ps 명령어는 다들 잘 아실테니 옵션부분만 설명하도록 하겠습니다.

- "m" 은 프로세스 뿐만 아니라 Kernel Thread에 대한 리스트를 출력합니다.

"-o" 옵션과 같이 사용하면 다양한 정보를 출력할 수 있습니다.

- "p" 는 프로세스 ID를 설정합니다. ","를 사용하여 여러개의 프로세스 ID를 지정할 수 있습니다.

- "o" 는 Format 지정을 지정합니다. Thread는 "THREAD"로 지정합니다.

다음은 ps -mp 명령어의 출력 결과 예입니다.

 

 

위와 같이 프로세스의 전체 정보와 그 밑으로 Thread 별(TID)로 정보가 출력됩니다.

구분 설명
TID Kernel thread ID for threads
ST The state of the process or kernel thread
CP The CPU utilization of the process or kernel thread
PRI The priority of the process or kernel thread
SC The suspend count of the process or kernel thread

그외 WCHAN, F, TT, BND, COMMA 정보가 있습니다.

자세한 사항은 ps man page나 메뉴얼을 참조하시기 바랍니다.

명령어 결과에서 Thread 상태 항목인 "ST" 부분과 CPU 사용율 항목인 "CP" 부분, 그리고 Thread의 Suspend 횟수 항목인 "SC" 부분을 주의깊게 볼 필요가 있습니다. 그 이유는 성능에 관련된 항목들이기 때문입니다.

위의 항목 중 Thread 상태 항목인 "ST" 부분에는 다음과 같은 상태 코드가 있습니다.

 

- "O" 는 Nonexistent 상태입니다.

- "R" 은 Running 상태입니다.

- "S" 는 Sleeping 상태입니다.

- "W" 는 Swapped 상태입니다.

- "Z" 는 Canceled 상태입니다.

- "T" 는 Stopped 상태입니다.

Java 프로세스의 경우 대부분이 "R" 또는 "S" 상태입니다.

TID(Thread ID)는 Java Thread dump 분석 시 Java Thread와 매핑하기 위한 key가 됩니다.

이 부분은 차후에 Thread dump 분석 시 설명드리도록 하겠습니다.

그 다음으로는 Solaris와 HP-UX에서 살펴보았던 pstack과 유사한 procstack 명령어입니다.

procstack 은 Solaris와 HP-UX에서 프로세스의 Native Stack을 확인할 수 있듯이 AIX에서 프로세스의 Native Stack을 확인하기 위한 명령어 입니다.

Solaris와 HP-UX에서는 p로 시작하는 프로세스 명령어 대신 AIX에서는 proc로 시작하는 프로세스 명령어가 있습니다. 두 종류가 거의 비슷한 기능을 제공합니다.

자세한 사항은 다음 포스트를 참고하시면 됩니다. (http://blog.naver.com/bumsukoh/110098535739)

명령어 사용법은 다음과 같습니다.

 

# procstack [프로세스 ID]

 

출력 결과는 다음과 같습니다.

 

위와 같이 JVM을 구현한 Native Stack 입니다. Java 1.6(64bit) 버전의 Jeus 서버에 대한 Thread Native Stack 입니다.

각 Thread 별로 tid와 pthread id 에 대한 내용이 출력되며, 여기서의 tid는 위에서 "ps -mp"의 TID와 동일한 값을 나타냅니다.

 

"ps -mp"의 모니터링 결과 CPU 점유가 높은 Thread에 대해 procstack으로 Native Stack 확인이 가능하게 됩니다. 물론 Java 프로세스의 경우 procstack으로 Java Stack 확인이 불가능하지만 그런데로 도움은 됩니다. 그 이후에 필요하다면 Thread dump(javacore 파일)을 생성하여 Java Stack을 확인할 수 있습니다.

 

위의 Native Stack은 모두 Java의 SocketInputStream의 socketread() 부분에서 대기중(상태"SLEEP")이며, 최종 Native Stack은 poll() 함수인 것을 알 수 있습니다.

 

poll()함수는 Thread를 즉시 "SLEEP"시키고 해당 STREAM(파일 FD)에서 Data input event가 감지되면 Thread를 wake-up시켜 데이터를 처리할 수 있도록하는 기능을 하는 함수입니다.

 

즉, Java의 socket read는 내부적으로 poll() 함수로 구현되었다는것을 알 수 있는 부분입니다.

그 외에 프로세스에 대한 degugging을 위한 dbx나 프로파일 툴인 tprof등을 사용할 수 있습니다.

프로파일 툴인 tprof는 java 기반(java stack 제공)의 프로파일을 할 수 있어 전문적인 프로파일링 툴이 없을 경우 유용하게 사용할 수 있습니다. (tprof 참고 : http://blog.naver.com/bumsukoh/110104594318)

 

이것으로 AIX에서 유용하게 사용할 수 있는 Thread 관련 명령어에 대해 알아 보았습니다.

다음 포스트에서는 본격적으로 Thread dump에 대한 내용을 설명드리도록 하겠습니다.

어제 엄청난 호우로 많은 지역이 피해를 입은 것 같습니다. 저도 어제 비와 천둥소리로 잠을 설칠 정도 였습니다. 모두들 호우에 피해를 입지 않도록 각별히 신경 쓰셔야 할 것같습니다.

그럼 이만.. 다음에 뵙겠습니다.

 

반응형

'OS > AIX::' 카테고리의 다른 글

AIX의 2가지의 프로그래밍 모델  (0) 2014.01.09
AIX 컴파일 정보 2  (0) 2012.12.05
AIX 라이브러리 버전 확인  (0) 2012.07.12
AIX 컴파일 정보  (0) 2011.10.05
AIX malloc - free 시 혹은 new - delete 시의 메모리 반환  (0) 2011.08.21
반응형

너무 좋은 글들... 최근 dump 분석 때문에 골머리 썩고 있었는데 완전 딱 맞는 자료를 발견했다...

 

 

http://blog.naver.com/bumsukoh/110114008655

 

 

이번 포스트에서는 Thread dump를 분석하기 전에 Thread들에 대한 정보를 확인하기 위한 유용한 OS 툴들에 대한 내용을 다루어 보겠습니다.

각 OS별로 프로세스 및 Thread 레벨로 상태를 확인하기 위한 명령어들을 제공합니다. 멀티 Thread 기반으로 운영체제들이 변해가면서 제공하는 기능들이 생겨나게 되었습니다.

 

여기서 설명드리는 OS 툴들은 모두 프로세스에 대한 Native Stack 정보를 출력하는 것입니다.

물론 java stack을 볼 수 없지만 문제가 발생한 Thread에 대한 Native Stack 및 Thread ID를 확인할 수 있습니다. 일부 Java Thread dump에서는 Native Thread ID를 통해 해당 Thread를 찾기도 합니다.

첫번째로 Solaris에서 제공하는 명령어에 대해 알아 보겠습니다.

 

Solaris에서 가장 유용하게 사용할 수 있는 프로세스와 Thread 모니터링 툴로는 prstat 이 있습니다.

prstat은 생각보다 굉장히 강력한 기능을 가지고 있습니다. 프로세스와 Thread의 CPU 자원 사용율 및 메모리 사용율을 알 수 있지만, CPU 사용율에 대한 microstat 정보를 확인 할 수 있어 굉장히 유용합니다.

 

저의 경우 이 prstat의 microstat정보를 유용하게 활용하여 시스템의 CPU 자원 사용의 문제점을 확인하고 디버깅한 경험이 있습니다.

prstat 명령어 사용법은 다음과 같습니다.

 

# prstat -L -m -p [프로세스 ID] [refresh interval]

옵션은 다음과 같습니다.

 

- "-L" 은 Thread 레벨의 정보를 출력합니다.

- "-m" 은 microstat 정보를 출력합니다.

- "-p" 은 모니터링할 프로세스 ID입니다.

- "refresh interval" 은 모니터링 정보 갱신 주기입니다.

 

다음은 prstat 출력 결과 예입니다.

==============================================================================================

PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/LWPID

----------------------------------------------------------------------------------------
24565 mspbpp 0.8 0.1 0.0 0.0 0.0 0.0 99 0.2 198 1 198 0 java/14
24565 mspbpp 0.8 0.1 0.0 0.0 0.0 0.0 99 0.2 198 1 198 0 java/19
24565 mspbpp 0.4 0.1 0.0 0.0 0.0 0.0 99 0.2 198 0 198 0 java/15
24565 mspbpp 0.4 0.1 0.0 0.0 0.0 0.0 99 0.2 198 0 198 0 java/21
24565 mspbpp 0.4 0.1 0.0 0.0 0.0 0.0 99 0.2 198 0 198 0 java/24
24565 mspbpp 0.1 0.0 0.0 0.0 0.0 100 0.0 0.0 2 0 3 0 java/2
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 39 0 39 0 java/8
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 2 0 4 0 java/9
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 0 0 0 0 java/13
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 0 0 0 0 java/12
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 0 0 0 0 java/11
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 0 0 0 0 java/10
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 0 0 0 0 java/7
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 0 0 0 0 java/6
24565 mspbpp 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 0 0 0 0 java/5
Total: 1 processes, 26 lwps, load averages: 0.15, 0.15, 0.14

==============================================================================================

위와 같이 프로세스의 Thread별(LWPID)로 CPU 사용에 대한 상세 정보가 출력됩니다.

다음은 prstat의 수행 결과 항목입니다. (여기서는 CPU에 대한 항목 만 설명합니다.)

구분 설명
USER The percentage of time the process has spent in user mode.
SYS The percentage of time the process has spent in system mode.
LCK The percentage of time the process has spent waiting for user locks.
SLP The percentage of time the process has spent sleeping.
LAT The percentage of time the process has spent waiting for CPU.

이외 TRP, TFL, DFL, VCX, ICX, SCL, SIG 정보가 있습니다.

위의 결과 내용을 추출하여 분석한 결과 그래프(예시)를 살펴 보도록 하겠습니다.

이 그래프는 동일한 어플리케이션에 대해 사용자 수를 높이며 CPU 자원에 대한 사용 추이입니다.

눈여겨 볼 부분은 사용자가 많아 질 수록 SLP와 LCK 부분이 낮아 지며 LAT 부분이 높아 지는 것을 알 수 있습니다. 즉 사용자 량이 많아 처리량이 많아 질수록 초기에 LCK인 user locks (Java에서 object block이겠죠)과 SLP인 sleep (이 sleep도 대기상태입니다)이 높았다가 점점 낮아 집니다. 이는 Thread들이 일을 쉬지않고 열심히 더 하고 있다는 말이겠죠. 그러다 보니 LAT (CPU 할당 대기)가 점점 높아 지게 되는 것입니다.

여기에서 해당 시스템의 총 사용가능한 사용자에 대한 수치를 알 수 있습니다. 사실 이 작업을 할때는 패키지 제품에서 CPU 과부하가 있다는 것을 보여주기 위해 한것입니다. 결론적으로는 패키지의 CPU 과부하 버그를 조치한 경우입니다.

이렇게 prstat은 유용하게 사용할 수 있는 Solaris의 툴입니다.

그 다음으로는 pstack 명령어입니다.

pstack 명령어는 Solaris에서 프로세스의 Native Stack을 확인 할 수 있는 명령어입니다.(HP-UX에서도 사용합니다.)

이 pstack은 Native Stack (C 코드)만 확인 할 수 있습니다. java stack 에 대한 내용을 확인이 불가능하죠. 아예 나오지 않습니다. (Java 버전 1.5 이상에서는 pstack하고 유사한 jstack이라는 명령어가 제공됩니다. java stack을 Thread dump 없이 볼 수 있답니다.)

이러한 pstack은 JVM 내부의 흐름을 파악하기 위한 방법으로 유용하며, JVM의 Bug 같은 경우를 확인할 때 사용되기도 합니다.(사용되는 빈도는 극히 드물지만요..)

 

명령어 사용법은 다음과 같습니다.

 

# pstack [프로세스 ID]

 

출력 결과는 다음과 같습니다.

=============================================================================================

----------------- lwp# 25 / thread# 25 --------------------
ff2cc7f4 lwp_cond_wait (189b848, 189b830, 0, 0)
feb54b78 __1cCosNPlatformEventEpark6M_v_ (189b830, 45754, fed35879, 7c400, 189b800, fee069ec) + 108
fe5df09c __1cNObjectMonitorGEnterI6MpnGThread__v_ (323df0, 230c00, 323e00, fedb2000, 323e00, 1) + 1cc
fe53879c __1cNObjectMonitorFenter6MpnGThread__v_ (323df0, 230c00, 230c00, 2, 18a4678, 230e78) + 358
fec03c60 __1cSObjectSynchronizerKfast_enter6FnGHandle_pnJBasicLock_bpnGThread__v_ (ddbff834, ddbff908, 1, 230c00, 34800, d6a244) + a4
febad568 __1cNSharedRuntimebAcomplete_monitor_locking_C6FpnHoopDesc_pnJBasicLock_pnKJavaThread__v_ (ec450a70, ddbff908, 230c00, fede68e1, 6, fedb2000) + dc
fc055754 * weblogic/socket/SocketMuxer.readReadySocketOnce(Lweblogic/socket/MuxableSocket;Lweblogic/socket/SocketInfo;)Z+337 (line 1954)
fc63b53c * *weblogic/socket/DevPollSocketMuxer.processSockets()V [compiled] +12 (line 184)
fc005868 * weblogic/socket/SocketReaderRequest.run()V+3 (line 58)
fc005868 * weblogic/socket/SocketReaderRequest.execute(Lweblogic/kernel/ExecuteThread;)V+1 (line 84)
fc005d88 * weblogic/kernel/ExecuteThread.execute(Lweblogic/kernel/ExecuteRequest;)V+19 (line 288)
fc005868 * weblogic/kernel/ExecuteThread.run()V+32 (line 224)
fc00021c * StubRoutines (1)
fe561bdc __1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_ (fc0001c0, 230c00, 1, d6a230, e11c6fd8, ddbffe78) + 208
fe90aebc __1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_ (ddbffe70, d6a234, fee07100, d6a240, ddbffda0, 230c00) + ec
fe5f0adc __1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_ (d6a234, ddbffe6c, ddbffe68, ddbffe64, ddbffe60, fee07100) + 6c
fe603350 __1cMthread_entry6FpnKJavaThread_pnGThread__v_ (dfc33688, 230c00, 54c00, fee07434, fee07100, fee06dd4) + 110
fec2318c __1cKJavaThreadRthread_main_inner6M_v_ (230c00, 16, fedee064, 19, fedb2000, 0) + 48
feb4ccbc java_start (230c00, 234e, fedb2000, fed33c51, 18a4678, fee02a2c) + 22c
ff2c8a20 _lwp_start (0, 0, 0, 0, 0, 0)

=============================================================================================

위와 같이 JVM을 구현한 Native Stack 입니다. Java 1.6 버전상의 Weblogic 10g에 대한 Thread Native Stack입니다.

lwp# 25 / thread# 25 는 Thread의 ID입니다. lwp는 Light Weight Process라 하여 경량의 프로세스라 하여 Thread에 대한 통칭입니다.

이 Thread ID는 이후에 설명드릴 Thread dump에서 thread와 매핑할 수 있는 key가 됩니다.

 

위의 Thread Stack에서는 Weblogic Executor Thread에서 사용자 요청을 받기 위해 대기중인 것을 알 수있습니다. 그래서 stack의 최종 frame은 "lwp_cond_wait (189b848, 189b830, 0, 0)" 입니다.

그 외에 프로세스 debug를 위한 dbx 나 Solaris의 막강 프로파일 툴인 Dtrace등을 활용할 수 있으나, 굉장히 advanced한 내용으로 많은 지식을 필요로 합니다.

 

대부분은 위의 내용정도만 아셔도 트러블슈팅하는데 많은 도움이 됩니다.

다음 포스트에서는 "OS 툴을 잘 활용하라 !" HP-UX 에 대해 설명드리도록 하겠습니다.

장마가 끝나니 날씨가 장난이 아니네요. 다시 장마시즌이 점점 그리워지는건 왜일까요 ^^

몸 건강들 하시고 다음 포스트에서 뵙겠습니다.

그럼 이만

 

반응형
반응형

살펴보다가 너무 좋은 자료가 있어서 퍼왔다..

출처 : http://blog.naver.com/bumsukoh/110114572973

 

 

 

이전 포스트에 이어 프로세스 Thread 정보를 확인하기 위한 OS 명령어 활용법 그 두번째로 HP-UX에서 제공하는 명령어에 대해 알아 보도록 하겠습니다.

 

HP-UX에서는 glance로 프로세스에 대한 모든 것을 볼 수 있습니다.

glance 툴은 굉장히 많은 유용한 정보를 제공합니다. 우선 시스템에 대한 전반적인 상태 정보, 프로세스 정보, 네트웍, DISK, 메모리등등.. HP-UX 시스템에 대한 거의 모든 것을 모니터링 할 수 있는 툴이라 할 수 있습니다.

glance에서 java 프로세스와 관련하여 보아야할 주요항목이 프로세스와 프로세스의 Thread, 프로세스 메모리 정보들입니다.

Solaris prstat의 microstat 정보만큼은 아니지만 THREAD에 대한 각종 CPU 사용 정보(System, User, Cswitch, Interrupt, Nice, Nnice, Normal등)를 제공합니다.

 

이러한 glance는 text 모드와 gui 모드, 그리고 advisor 모드를 제공합니다.

터미널에서 바로 사용할 수 있는 text 모드가 가장 많이 사용됩니다. gui 모드는 X-Window 환경에서 사용하며 여러가지 정보를 각각의 창에서 볼 수 있다는 장점이 있습니다. advisor 모드는 필요한 정보를 특정 시간동안 일정한 간격으로 정보를 남길수 있습니다. advisor 모드는 "HP-UX Glance advisor를 통한 CPU 자원 모니터링 방법" (http://blog.naver.com/bumsukoh/110107086979) 포스트를 참조하시면 될 것 같습니다.

glance 명령어 사용법은 다음과 같습니다.

 

# glance -j [갱신간격(초)]

 

저는 개인적으로 "-j" 옵션을 선호합니다. 갱신 간격이 기본이 5초여서 신속한 정보를 보기가 힘든점이 있어 저는 "glance -j 1" 를 통해 1초 마다 갱신하도록 하여 모니터링합니다.

 

그럼 glance의 프로세스 정보와 Thread 정보를 확인하는 방법에 대해 설명하겠습니다.

=========================================================================================

다음은 glance를 수행 시 첫화면입니다.

 

상단에 전체적인 시스템 사용율 정보(CPU, Memory, Disk, Network등)가 나옵니다.

그리고 그 아래에 각 프로세스들에 대한 리스트와 간략한 CPU. Memory, Block 정보들이 나오게됩니다(다른 프로세스명과 User ID는 일부러 삭제했습니다.). 여기서는 java 프로세스(pid 9852)에 대한 모니터링을 설명하도록 하겠습니다.

 

자 그럼 해당 프로세스에 대한 상세 모니터링을 위해 "S" key를 누르고 프로세스 ID를 입력합니다.

 

그러면 위와 같이 해당 프로세스에 대한 상세정보가 출력됩니다.

보시면 아시겠지만 프로세스에 대한 다양한 정보들이 쭉 출력됩니다. 이러한 정보 중에서 다양한 CPU사용율정보(User, System, Interrupt 등), Memory 사용율 정보(RSS/VSS, Fault 등), Wait Reason 등의 정보를 눈여겨 보시면 좋을것 같습니다. 우선은 수치가 높은 부분은 확인을 해 볼 필요가 있겠죠.

 

그럼 여기서 각 Thread에 대한 정보를 확인 하기 위해 "G" key를 누릅니다.

위와 같이 각 Thread에 대한 리스트와 함께 CPU, I/O, Priority, Block 정보를 볼 수가 있습니다.

 

CPU의 경우 현재 사용율과 누적 사용율을 보실 수가 있습니다. 아무래도 누적 사용율이 높으면 일을 많이 하는 Thread라고 판단할 수 있습니다. 그럼 해당 Thread가 무엇인지 확인할 필요가 있습니다. 이렇때 Thread dump를 통해 TID와 매핑하여 확인할 수 있습니다.

위의 그림에서는 6949836 TID가 현재 CPU 사용을 많이 하고 있으며, CPU Time 누적치도 높게 보여집니다. 참고로 CPU Util과 CPU Time의 의미는 다음과 같습니다.

- CPU Util은 해당 모니터링 시간(glance interval이 3초라면 3초동안)동안 해당 Thread가 사용한 전체 CPU 용량(100 * CORE수의 %)에 대한 비율입니다.

- CPU Time은 해당 Thread가 실제로 CPU를 점유한 시간입니다. 보통 CPU의 Scheduling 시간(보통 1 tick이라함)이 10ms이므로 Thread가 한번에 점유할 수 있는 최대 시간은 10ms라고 볼 수 있습니다. 우선순위가 높은 Thread의 경우 CPU 점유 시간이 높을 수 밖에 없겠죠.

 

더욱 상세한 Thread 정보를 보기 위해서는 "I" key를 누르고 TID를 입력합니다.

위와 같이 해당 TID의 Thread에 대한 상세 정보가 출력됩니다. 프로세스의 상세정보 부분과 거의 유사한 정보들이 출력됩니다.

 

이렇게 glance를 통해 프로세스에 대한 전반적인 모니터링 방법에 대해 알아 보았습니다.

많은 분들이 glance 라는 툴은 잘아시는데 사용법, 특히 화면 key에 대한 부분을 잘 모르시더라고요.

저도 이러한 key를 모두 알고 있지는 않습니다. 대신 key help 화면을 위한 key는 꼭 기억하고 있습니다.^^ 화면에서 "h" key를 누르게 되면 다음과

같은 help 화면을 보실 수 있습니다.

 

 

help key만 알고있으며 필요시 key를 확인하며 사용해도 아무 지장이 없습니다.

추가적으로 프로세스에 대한 Memory 정보와 Open File정보, System call 정보에 대한 화면을 보여드리도록 하겠습니다.

 

- Memory 정보

 

프로세스에 할당된 메모리 block들에 대한 메모리 Type, 참조계수, RSS, VSS, 할당 File명등에 대한 정보를 확인하실 수 있으며, 아래에는 프로세스에 대한 유형별(Text, Data, Stack, Shared, Other) 전체적인 사용량이 출력됩니다.

- Open File 정보

 

프로세스가 Open한 FD(File Descriptor)에 대한 정보가 출력됩니다. 실제 File의 경로와 파일명이 잘 출력되지 않지만 Volumne과 inode정보가 있어 파일을 찾는(find -inum 명령 사용)데는 문제가 없습니다.

- System call 정보

 

프로세스가 수행시킨 System call 함수에 대한 항목과 그에 대한 정보들입니다.

위에서는 횟수로는 gettimeofday() 함수가 가장 많이 호출되었으며, Elapsed Time은 ksleep() 함수인것을 알 수 있습니다.

해당 프로세스가 시간과 관련된 내용을 많이 처리하는 프로세스인 것을 알 수 있으며, 이 부분이 염려할 수준은 아닌것으로 보여집니다. ksleep()은 프로세스가 SLEEP으로 빠지게 되면 호출되는 함수로 CPU JOB만 수행하는 프로세스는 아니며, I/O등의 BLOCK(임의적일수도 있음)으로 인해 SLEEP으로 빠지는 경우가 있는 것으로 보여집니다.

 

=========================================================================================

위와 같이 glance를 사용하면 프로세스에 대해 OS가 제공하는 거의 모든 정보를 모니터링 가능합니다.

참고로 glance는 HP-UX의 kernel trace 정보를 활용하여 보여줌으로 굉장히 막강한 기능을 제공합니다.

kernel trace를 위해 caliper나 ktrace등으로 별도로 하지 않아도 어느 정도의 정보는 제공하게 되며 이러한 정보는 시스템을 튜닝 및 trace하는데 상당한 도움이 되는 것이 사실입니다.

 

Solaris(DTrace)나 AIX(trace, curt등) 을 사용해 보셨다면 glance가 제공하는 실시간적인 상태 정보는 거의 환상이라고 할 수 있겠죠.

그 다음으로는 pstack 명령어입니다.

 

이 부분은 Solaris의 pstack과 동일하기 때문에 별도로 설명은 드리지 않겠습니다.

Solaris의 ptack 부분 (http://blog.naver.com/bumsukoh/110114008655)을 참고하시면 되겠습니다.

단, pstack은 HP Itanium 에서 사용가능한 명령어입니다.

 

그외 pfiles, pmap등과 같은 프로세스 관련된 유용한 명령어들이 있습니다만, 여기서는 Java 프로세스와 Thread에 대한 내용에 초점이 두었기에 다루지 않도록 하겠습니다.

 

(다음 기회에 HP-UX의 프로세스 관련 명령어를 통한 모니터링 방법에 대해 설명드리겠습니다.)

다음은 gdb인데요. 굳이 gdb까지 사용하여 뭔가 트러블슈팅하는 경우는 그렇게 많지 않을 것 같은데요.

알고 있으면 상당히 유용한건 사실입니다. (써먹을 기회가 별로 없어서 그렇지만요 ㅠ.ㅠ!)

자, 그럼 gdb를 어디에 써먹을 것인가? gdb는 Unix 프로세스를 debugging하기 위한 툴입니다.

이 툴은 보통 C 언어의 프로그램을 디버깅하는데 사용됩니다.(물론 C++, Fortran, Ada등도 가능합니다.)

Java 기반의 시스템과 프로그램이 많아지면서 HP-UX에서는 gdb에서 Java에 대한 분석도 가능하도록 하기 위한 기능을 제공하게 됩니다.

Java Unwind LIbrary라고 하는것인데.. 자세한 사항은 "HP-0UX 에서 gdb를 이용해 Java 프로세스 core 분석하기 !!" (http://blog.naver.com/bumsukoh/110112408842) 포스트를 참고하시면 될 것 같습니다.

그 외에 프로세스 프로파일링을 위한 막강 프로파일 툴인 caliper 등을 활용할 수 있으나, 굳이 Java기반에서는 이러한 프로파일링 툴까지 쓸 필요는 없을것 같고, 대신 Java를 위한 프로파일링 툴은 알아둘 필요가 있습니다. 이 부분은 이번 연재의 뒷부분에서 다루도록 하겠습니다.

다음 포스트에서는 "OS 툴을 잘 활용하라 !" AIX 에 대해 설명드리도록 하겠습니다.

그럼 건강하시고 다음 포스트에서 뵙도록 하겠습니다.

반응형

'OS > HP-UX::' 카테고리의 다른 글

HP-UX 에서 Glance와 ps로 보는 메모리 내용의 차이점.  (0) 2015.08.17
HP-UX depot 패키지 설치  (0) 2014.06.11
HP-UX 11.11 gcc 설치  (0) 2014.06.11
HP-UX 컴파일러 관련 정보  (0) 2011.12.01
반응형

출처 : http://minlove.tistory.com/4

 

1. AIX

shutdown -F
shutdown -Fr 0

2. HPUX
종료 shutdown -hy 0
리붓 shutdown –r 0

 

/sbin/shutdown [-h] [-r] [-y] grace

-h : halt

-r : reboot

-y : 사용자 대화 종료

grace : 시스템 종료 유예 시간 단위 Sec

 

/usr/sbin/reboot [-h] [-r] [-n] [-s] [-m mesg] [-t time]

-h : halt
-r : reboot
-n : no sync
-s : sync
-m : message 발송
-t : 시스템 종료 유예시간

참고 ) reboot은 싱글유저가 아니어도 실행이 가능하지만 shutdown 보다 덜 안정성이
있다..
이유는 프로세스 종료시 강제종료을 사용하기 때문..
권장은 시스템이 싱글모드일때 부득이 시스템을 빨리 종료해야할때 외에는
reboot 을 다중사용자 모드에서 사용하지 마세요...

[ 숙지 사항]
시스템 종료 : 반드시 / 에서 실행 (# cd / )

# who -r : 일반유저가 있다면 종료을 login out 하도록 함
# 모든 사용자 프로그램 종료
# cd
# shutdown -hy 0 : 시스템 즉시 종료

시스템 리부트
# shutdown -ry 0 : 시스템 즉시 리부트
싱글모드일때 종료 : # reboot -h
싱글모드일때 리부트 : # reboot -r or reboot


3. Solaris
종료 shutdown -y -i0 -g0
리붓 shutdown -y -i6 -g0

 
반응형
반응형

 

AIX에서 각각의 라이브러리 버전을 확인하고자 할 때 어떻게 해야하는지 한참 찾다가 드디어 발견..

컴파일 후 다른 머신에서 실행시 발생하는 동적 라이브러리 버전 때문에 확인해야 할 경우 미리 확인하면 유용할 듯..

 

--------------------------------------------------------------------------------------

exec(): 0509-036 다음 오류 때문에 <프로그램 명> 프로그램을 로드할 수 없습니다.
0509-130 <프로그램 명>에 대한 기호 해상도가 다음 이유 때문에 실패했습니다.
0509-136 __pth_init(번호 134) 기호가 종속 모듈
/lib/libpthread.a[shr_xpg5_64.o]에서 반출되지 않았습니다.
0509-192 'dump -Tv' 명령으로 .loader 섹션 기호를
시험하십시오.

--------------------------------------------------------------------------------------

뭐 대략 이런 에러 .... ㅡㅡ... 산산조각 깨졌네요 허허허

해당 에러가 나올 때는 AIX 라이브러리 셋 을 570+으로 업그레이드 하라는데...

5.3.7.0 이상으로 하라는건가...? 뭐 어쨋든 컴파일한 머신과 라이브러리 버전이 같다면 큰 문제는 없을듯.

 

근데 어디서 어떻게 라이브러리를 업데이트 받는걸까..

혹시 지나가시다가 아시는 분 생기시면 댓글 달아주시면 정말 감사드릴텐데.. ㅋ

 

 

명령어

lslpp -al

옵션은 al 정도만 사용해도 충분하게 다 커버할 수 있는 듯하다 필요하다면 man으로 자세한 내용을 확인하자

아래는 실제로 커맨드시 출력되는 내용들

 

 

 

 

우선 OSLEVEL을 확인하시려면

#> oslevel -r

5300-04

 

와 같이 뜨구요.

xlC 컴파일러 라이브러리 파일셋을 보려면

 

#> lslpp -l xlC*rte

  파일 세트                     레벨  상태       설명
  ----------------------------------------------------------------------------
경로: /usr/lib/objrepos
  xlC.aix43.rte              4.0.2.2  확정됨     C Set ++ Runtime for AIX 4.3
  xlC.aix50.rte             10.1.0.0  확정됨     XL C/C++ Runtime for AIX 5.3
  xlC.rte                     10.1.0.0  확정됨     XL C/C++ Runtime

 

뭐 요렇게 나오네요..

또한 해당 라이브러리의 파일셋이 어디인지 알고 싶다면 -w 옵션을 사용.

#> lslpp -w /usr/lib/libpthreads.a

  파일                                        파일 세트             유형
  ----------------------------------------------------------------------------
  /usr/lib/libpthreads.a             bos.rte.libpthreads   Symlink

 

해당 라이브러리의 인스톨 및 언데이트 히스토리를 알고 싶다면 -h 옵션을 사용

 

#> lslpp -h bos.rte.libpthreads

  파일 세트       레벨      조치         상태         날짜         시간
  ----------------------------------------------------------------------------
경로: /usr/lib/objrepos
  bos.rte.libpthreads
                  5.3.8.0   확정         완료         09/07/09     01:20:56
                  5.3.9.0   확정         완료         10/03/25     14:55:11

이것도 요렇게 친절하게 나옵니다..

 

 

 

 

 

 

반응형
반응형

 

-------------------------------------------------------

file [바이너리명]

: 몇 비트 파일인지 확인 할 수 있다.

 

-------------------------------------------------------

nm 사용법 -> 알아봅시다.

 

 

-------------------------------------------------------

- 해석되지 않은 심볼
현상 : ld: 0711-317 ERROR: Undefined symbol: .pow
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
원인 : 심볼을 해석하지 못한 에러는 다양한 경우에 발생할 수 있지만 대부분의 이유는 필요한 파일을 제대로 주지 않은 경우이다.
조치 : 라이브러리에 들어있지 않은 라이브러리 함수를 호출하는 경우 해당하는 함수가 들어있는 라이브러리를 지정해주어야 한다.

- 동일한 심볼을 중복해서 정의할 경우 프로그래밍 에러가 발생.
현상 : ld: 0711-224 WARNING: Duplicate symbol:
.A<int>::f()
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
원인 : 이 경우 링커는 첫번째 심볼 만을 인정하기 때문에 의도하지 않은 결과가 발생할 수 있다. 함수의 이름을 바꾸던가 정적(static) 함수를 사용해야 한다.
조치 : 심볼이 중복되어 똑같이 정의되어 있으므로 -bhalt:5 옵션을사용해서 링커에게 메시지를 보여주지 않도록 해야 한다.
-bhalt 링커 옵션은 링킹 과정 중 지정한 숫자보다 적은 에러메시지가 발생하면 이 메시지를 보여주지 않도록 한다.

- 링킹과정 중 메모리가 충분하지 않을 때
현상 : ld: 0711-101 fatal error, allocation of bytes fail in routine initsymtab_info.
There is not enough memory.
원인 : 대부분 원인은 페이징 공간이 너무 크기가 작거나, 링커명령을 사용한 사용자의 자원제한이 너무 낮아서 발생한다.
조치 : 위와 같은 에러가 발생하면 다음 사항을 체크해보고 가능하다면 페이징 공간을 늘리는 편이 좋다.
1.시스템 내의 가용한 페이징 공간
2.링커를 사용한 사용자가 사용할 수 있는 자원의 제한. 이 상황은 ulimit 명령으로 알아볼 수 있다.

-------------------------------------------------------

-lm

/bin/sh ./libtool --silent --tag=CC --mode=link gcc -g -O2 -Wall -W -D_THREAD_SAFE -o utilities/animate utilities/animate.o magick/libMagick.la wand/libWand.la
ld: 0711-317 ERROR: Undefined symbol: .fmod
ld: 0711-317 ERROR: Undefined symbol: .cos
ld: 0711-317 ERROR: Undefined symbol: .sin
ld: 0711-317 ERROR: Undefined symbol: .pow
ld: 0711-317 ERROR: Undefined symbol: .ceil
ld: 0711-317 ERROR: Undefined symbol: .sqrt
ld: 0711-317 ERROR: Undefined symbol: .cexp
ld: 0711-317 ERROR: Undefined symbol: .exp
ld: 0711-317 ERROR: Undefined symbol: .floor
ld: 0711-317 ERROR: Undefined symbol: .atan2
ld: 0711-317 ERROR: Undefined symbol: .hypot
ld: 0711-317 ERROR: Undefined symbol: .tan
ld: 0711-317 ERROR: Undefined symbol: .log
ld: 0711-317 ERROR: Undefined symbol: .log10
ld: 0711-317 ERROR: Undefined symbol: .acos
ld: 0711-317 ERROR: Undefined symbol: .asin
ld: 0711-317 ERROR: Undefined symbol: .atan
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: ld returned 8 exit status
make: 1254-004 The error code from the last command is 1.

에러 제거시

You're obviously missing libm.so (or libm.a or libm.sl or whatever the
extension for (shared) libraries is on your system).

You can check config.sh to see if Configure includes -lm in the 'libs='
line

libs='-lbind -lnsl -ldbm -ldb -ldl -lld -lm -lcrypt -lc -lbsd';

if it does, check to see if libm.a is in any of the path's shown for
libs

libdirs=' /usr/local/ppc64/lib64  /lib /pro/local/lib';
libpth='/usr/local/ppc64/lib64 /lib /usr/lib /usr/ccs/lib /usr/local/lib';
libsdirs=' /lib /usr/local/ppc64/lib64';
libld.a /lib/libm.a /lib/libcrypt.a /lib/libc.a /lib/libbsd.a';
libspath=' /usr/local/ppc64/lib64 /lib /usr/lib /usr/ccs/lib /usr/local/lib';

-------------------------------------------------------

반응형

'OS > Common' 카테고리의 다른 글

Z 확장자 압축해제  (0) 2013.07.09
aix hpux solaris 특징 및 명령어 비교  (0) 2012.12.05
ftp 사용법 [명령어]  (0) 2011.10.20
Tar 와 Gzip Bzip2사용법  (0) 2011.10.20
unix/linux의 OS 32/64bit 확인 방법  (0) 2011.10.04
반응형

출처 : http://www.wowunix.com/cgi-bin/CrazyWWWBoard.cgi?mode=read&num=80&db=solaris&backdepth=1

프롬프트에 현재 디렉토리명을 넣으려면?


그것은 사용하는 쉘에 따라 다르다. 몇몇 쉘에서는 이것에 쉽지만
다른 쉘에서는 어렵거나 불가능 할 수도 있다.

C Shell (csh):
다음을 여러분의 .cshrc에 넣어서 프롬프트를 여러분이 원하는 대로 바꿀 수 있다.

alias setprompt 'set prompt="${cwd}% "'
setprompt # to set the initial prompt
alias cd 'chdir \!* && setprompt'

만약 pushd와 popd를 원하면 다음과 같이 하라

alias pushd 'pushd \!* && setprompt'
alias popd 'popd \!* && setprompt'

몇몇 C쉘은 $cwd 변수를 가지고 있지 않다. 그때는 `pwd`를 사용해야 한다.

여러분이 단지 현재 디렉토리의 마지막 구성요소만을 원한다면 여러분의 프롬프트에
다음과 같이 넣을 수 있다. 예를 들어("mail% ")

alias setprompt 'set prompt="$cwd:t% "'

몇몇 다른 옛날 csh은 &&와 ||를 반대의 의미로 사용하기도 한다.
다음을 사용해 보라.

false && echo bug

만약 "bug"라는 문자가 나오면 여러분은 &&와 ||를 바꾸어서 사용해야 한다.
그리고 더 나은 csh을 구해서 설치 하라.

Bourne Shell (sh):

만약 Bourne Shell의 새로운 버전을 가지고 있다면 여러분은 자신의 명령인
shell 함수를 만들 수 있다.

xcd() { cd $* ; PS1="`pwd` $ "; }

만약 Bourne shell의 옛날 버전을 가지고 있다면 좀 복잡하긴 하지만
불가능 한건 아니다. 여기 그 방법이 있는데, 다음을 .profile에 넣어라.

LOGIN_SHELL=$$ export LOGIN_SHELL
CMDFILE=/tmp/cd.$$ export CMDFILE
# 16 is SIGURG, pick a signal that's not likely to be used
PROMPTSIG=16 export PROMPTSIG
trap '. $CMDFILE' $PROMPTSIG

그리고나서 다음의 실행 가능 스크립트를 만들어서 여러분의 PATH에 해당하는
위치에 "xcd"라는 이름으로 넣도록 하라.

: xcd directory - change directory and set prompt
: by signalling the login shell to read a command file
cat >${CMDFILE?"not set"} < cd $1
PS1="\`pwd\`$ "
EOF
kill -${PROMPTSIG?"not set"} ${LOGIN_SHELL?"not set"}

그리고 나서 "xcd /some/dir"하면 디렉토리가 변경이 된다.

Korn Shell (ksh):

다음을 .profile에 넣어라:
PS1='$PWD $ '

단지 디렉토리의 마지막 구성요소를 원한다면 다음과 같이 하라
PS1='${PWD##*/} $ '

T C shell (tcsh)

Tcsh은 csh의 개선된 버전이며 몇가지 고유의 변수와 다른 몇몇 기능들을 가지고 있다

%~ 현재 디렉토리, $HOME에 대해 ~를 사용한다
%/ 현재 디렉토리의 full pathname
%c or %. 현재 디렉토리의 trailing component

그래서 이렇게 할 수 있다.

set prompt='%~ '

BASH (FSF's "Bourne Again SHell")

$PS1의 \w는 현재 디렉토리의 Full pathname을 뜻하며 ~는 $HOME에 대한 확장이다
그래서 위의 sh과 ksh 솔루션에 더하여 여러분은 다음을 사용할 수 있다.

PS1='\w $ '
또는
PS1='\W $ '

반응형
반응형


보통 gcc나 g++은 /user/bin에 있고 cc는 gcc의 링크가 걸려 있다. (내가 알기로는)

HP-UX에서 사용하는 c++ 컴파일러는 aCC인데 해당 컴파일러의 위치는
/opt/aCC/bin에 있다. 물론 /opt/aCC에 lib나 include 관련 내용도 찾아 볼 수 있다.

CC 파일의 경우는 /usr/ccs에 보면 cc 파일이 있다.

----------------------------------------------------------------------------------
어쨋거나 HP-UX에서 사용하는 aCC용 옵션들을 보면 아래와 같다.


컴파일 옵션:

aCC
HP aC++ 컴파일러
$EXTRA_CFLAG
7 HP-UX 플랫폼에서 IA64 및 64비트 지원이 사용 가능한 경우 이 플래그는7 7 +DD64 -AA 7 값을 포함하고, 32비트 지원이 사용 가능한 경우7 7 +DD32 -AA 7 값을 포함합니다. HP-UX 플랫폼에서 PA-RISC 및 64비트 지원이 사용 가능한 경우,7 +DA2.0W 값을 포함합니다. PA-RISC 플랫폼에서의 32비트 지원을 위해 이 플래그에는 값이 포함되지 않습니다.7 7
7
+DD64
7
IA64의 HP-UX용 64비트 코드를 생성하기 위해 사용되어야 합니다.7
7
+DD32
7
IA64의 HP-UX용 32비트 코드를 생성하기 위해 사용되어야 합니다.7
7 7
-AA
7
IA64에서 이름공간 std 및 C++ 표준 라이브러리와 같은 ANSI C++ 표준 기능을 허용합니다.7
7 7
+DA2.0W
7
PA-RISC의 HP-UX용 64비트 코드를 생성하기 위해 사용되어야 합니다.7
7
-ext
"long long" 지원을 포함하는 여러 C++ 확장자를 사용할 수 있게 합니다.
-I$DB2PATH/include
DB2 포함 파일의 위치를 지정합니다. 예를 들면, $HOME/sqllib/include와 같습니다.
-c
컴파일만 수행하고 링크는 수행하지 마십시오. 컴파일과 링크는 서로 다른 단계입니다.

링크 옵션

aCC
링커에 대한 프론트엔드로 HP aC++ 컴파일러를 사용합니다.
$EXTRA_CFLAG
7 HP-UX 플랫폼에서 IA64 및 64비트 지원이 사용 가능한 경우 이 플래그는7 7 +DD64 -AA 7 값을 포함하고, 32비트 지원이 사용 가능한 경우7 7 +DD32 -AA 7 값을 포함합니다. HP-UX 플랫폼에서 PA-RISC 및 64비트 지원이 사용 가능한 경우,7 +DA2.0W 값을 포함합니다. PA-RISC 플랫폼에서의 32비트 지원을 위해 이 플래그에는 값이 포함되지 않습니다.7 7
7
+DD64
7
IA64의 HP-UX용 64비트 코드를 생성하기 위해 사용되어야 합니다.7
7
+DD32
7
IA64의 HP-UX용 32비트 코드를 생성하기 위해 사용되어야 합니다.7
7 7
-AA
7
IA64에서 이름공간 std 및 C++ 표준 라이브러리와 같은 ANSI C++ 표준 기능을 허용합니다.7
7 7
+DA2.0W
7
PA-RISC의 HP-UX용 64비트 코드를 생성하기 위해 사용되어야 합니다.7
7
-o $1
실행 파일을 지정합니다.
$1.o
프로그램 오브젝트 파일을 지정합니다.
utilemb.o
Embedded SQL 프로그램의 경우, 오류 점검을 위한 Embedded SQL 유틸리티 오브젝트 파일을 포함합니다.
utilapi.o
non-Embedded SQL 프로그램의 경우, 오류 점검을 위한 DB2 API 유틸리티 오브젝트 파일을 포함합니다.
7 7
$EXTRA_LFLAG
7
런타임 경로를 지정합니다. 설정되어 있는 경우, 32비트에 대해서는 -Wl,+b$HOME/sqllib/lib32 값이 포함되며 64비트에 대해서는 -Wl,+b$HOME/sqllib/lib가 포함됩니다. 설정하지 않은 경우, 값을 포함하지 않습니다.7
7 7
-L$DB2PATH/$LIB
7
DB2 런타임 공유 라이브러리의 위치를 지정합니다. 7 32비트의 경우: $HOME/sqllib/lib32; 64비트의 경우:7 $HOME/sqllib/lib.7
-ldb2
DB2 라이브러리로 링크합니다.

추가 컴파일러 옵션에 대한 내용은 해당 컴파일러의 문서를 참조하십시오.



또한 HP-UX에서 사용하는 cc용 옵션들을 보면 아래와 같다. cc는 /usr/bin에 위치하고 있다.

컴파일 옵션:

cc
C 컴파일러
$EXTRA_CFLAG
7 HP-UX 플랫폼에서 IA64 및 64비트 지원이 사용 가능한 경우 이 플래그는7 +DD64 값을 포함하고, 32비트 지원이 사용 가능한 경우7 +DD32 값을 포함합니다. HP-UX 플랫폼에서 PA-RISC 및 64비트 지원이 사용 가능한 경우,7 +DA2.0W 값을 포함합니다. PA-RISC 플랫폼에서의 32비트 지원을 위해 이 플래그에는 값이 포함되지 않습니다.7 7
7
+DD64
7
IA64의 HP-UX용 64비트 코드를 생성하기 위해 사용되어야 합니다.7
7
+DD32
7
IA64의 HP-UX용 32비트 코드를 생성하기 위해 사용되어야 합니다.7
7
+DA2.0W
7
PA-RISC의 HP-UX용 64비트 코드를 생성하기 위해 사용되어야 합니다.7
7
-Ae
HP ANSI 확장 모드를 사용 가능하게 합니다.
-I$DB2PATH/include
DB2 포함 파일의 위치를 지정합니다.
-c
컴파일만 수행하고 링크는 수행하지 마십시오. 컴파일과 링크는 서로 다른 단계입니다.

링크 옵션

cc
링커에 대한 프론트엔드로 컴파일러를 사용합니다.
$EXTRA_CFLAG
7 HP-UX 플랫폼에서 IA64 및 64비트 지원이 사용 가능한 경우 이 플래그는7 +DD64 값을 포함하고, 32비트 지원이 사용 가능한 경우7 +DD32 값을 포함합니다. HP-UX 플랫폼에서 PA-RISC 및 64비트 지원이 사용 가능한 경우,7 +DA2.0W 값을 포함합니다. PA-RISC 플랫폼에서의 32비트 지원을 위해 이 플래그에는 값이 포함되지 않습니다.7 7
7
+DD64
7
IA64의 HP-UX용 64비트 코드를 생성하기 위해 사용되어야 합니다.7
7
+DD32
7
IA64의 HP-UX용 32비트 코드를 생성하기 위해 사용되어야 합니다.7
7
+DA2.0W
7
PA-RISC의 HP-UX용 64비트 코드를 생성하기 위해 사용되어야 합니다.7
7
-o $1
실행 파일을 지정합니다.
$1.o
프로그램 오브젝트 파일을 지정합니다.
utilemb.o
Embedded SQL 프로그램의 경우, 오류 점검을 위한 Embedded SQL 유틸리티 오브젝트 파일을 포함합니다.
utilapi.o
non-Embedded SQL 프로그램의 경우, 오류 점검을 위한 DB2 API 유틸리티 오브젝트 파일을 포함합니다.
7 7
$EXTRA_LFLAG
7
런타임 경로를 지정합니다. 설정되어 있는 경우, 32비트에 대해서는 -Wl,+b$HOME/sqllib/lib32 값이 포함되며 64비트에 대해서는 -Wl,+b$HOME/sqllib/lib가 포함됩니다. 설정하지 않은 경우, 값을 포함하지 않습니다.7
7 7
-L$DB2PATH/$LIB
7
DB2 런타임 공유 라이브러리의 위치를 지정합니다. 7 32비트의 경우: $HOME/sqllib/lib32; 64비트의 경우:7 $HOME/sqllib/lib.7
-ldb2
DB2 라이브러리로 링크합니다.

추가 컴파일러 옵션에 대한 내용은 해당 컴파일러의 문서를 참조하십시오.

반응형
반응형

ftp는 기본적으로 21번 포트를 사용한다.
접속하고자 하는 ip의 21번 포트가 열려 있는지 먼저 확인할 것.

[접속]
ftp [ip 주소]
name : [계정명]
password : [계정 비밀번호]

-----------------------------

FTP 실행 시 옵션

아래는

Dos의 쉘 명령어로

ftp -n -v -s:fileup.txt

를 실행하기위한 fileup.txt 이다.

fileup.txt 의 내용

open 192.168.10.101
user administrator
mypassword //user 유저 비밀번호 //한줄에 다써도 된다
bin // 바이너리모드로 전송
hash // 다운로드 진행상황 '#'표시
prompt off
cd lcgdir
mput 20070910.*

get afile.abc // afile.abc 다운로드실행
bye //ftp 종료

--------------------------------------------------------------------------------------------

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [-A] [host]

-v Suppresses display of remote server responses.
-n Suppresses auto-login upon initial connection.
-i Turns off interactive prompting during multiple file
transfers.
-d Enables debugging.
-g Disables filename globbing (see GLOB command).
-s:filename Specifies a text file containing FTP commands; the
commands will automatically run after FTP starts.
-a Use any local interface when binding data connection.
-A login as anonymous.
-w:buffersize Overrides the default transfer buffer size of 4096.
host Specifies the host name or IP address of the remote
host to connect to.

 

FTP 명령어

---------------------------------------------------------------------

ascii : 전송모드를 ASCII모드로 설정한다.(ascii또는 as)

binary : 전송모드를 BINARY모드로 설정한다.( binary또는 bi)

bell : 명령어 완료시에 벨소리를 나게한다.(bell)

bye : ftp접속을 종료하고 빠져나간다.(bye)

cd : remote시스템의 디렉토리를 변경한다.(cd 디렉토리명)

cdup : remote시스템에서 한단계 상위디렉토리로 이동한다.(cdup)

chmod : remote시스템의 파일퍼미션을 변경한다.(chmod 755 index.html)

close : ftp접속을 종료한다. (close)

delete : remote시스템의 파일을 삭제한다.(delete index.old)

dir : remote시스템의 디렉토리 내용을 디스플레이한다.(dir)

disconnect : ftp접속을 종료한다.(disconnect)

exit : ftp접속을 종료하고 빠져나간다.(exit)

get : 지정된 파일하나를 가져온다.(get index.html)

hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash)

help : ftp명령어 도움말을 볼 수 있다.(help또는 help 명령어)

lcd : local시스템의 디렉토리를 변경한다.(lcd 디렉토리명)

ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls -l)

mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다.( mdelete *.old)

mget : 여러개의 파일을 한꺼번에 가져오려할 때 사용한다. ( mget *.gz)

mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.(mput *.html)

open : ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net)

prompt : 파일전송시에 확인과정을 거친다. on/off 토글 (prompt)

put : 하나의 파일을 remote시스템에 올린다.(put index.html)

pwd : remote시스템의 현재 작업디렉토리를 표시한다.(pwd)

quit : ftp접속을 종료하고 빠져나간다.(quit)

rstatus : remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.(rstatus)

rename : remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명)

rmdir : remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명)

size :remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(size index.html)

status : 현재 연결된 ftp세션모드에 대한 설정을 보여준다.(status)

type : 전송모드를 설정한다.(type 또는 type ascii 또는 type binary)

[출처] DOS에서 FTP사용, FTP 명령어|작성자 이천사


참조:

. FTP 명령어

1) 일반 명령어
* help 또는 ? : 명령어 보기.
* ls : 파일 및 디렉토리 목록 보기. shell에서 ls와 같다.
* dir : 파일 및 디렉토리의 접근 권한과 목록을 자세히 출력.
유닉스쉘에서 ls -al과 같은 효과.
* pwd : 현재 디렉토리 위치 확인.
* cd : Remote System에서 디렉토리 이동.
* lcd : Local System의 디렉토리 변경.
파일 수신시 보관하려는 디렉토리를 변경할 때 사용.
* close : ftp> 프롬프트에서 원격지 시스템의 연결을 끝낸다.
ftp 프로그램은 종료하지 않는다.
* disconnect : 원격지 시스템의 접속 종료. ftp 프로그램은 종료하지 않는다.
* quit 또는 bye : 원격지 시스템의 접속을 종료하고 쉘상태로 복귀한다.

2) 환경 설정 명령어
* bin 또는 binary : binary 파일을 전송하기 위한 세팅.
* ascii : text 파일을 전송하기 위한 세팅.
* prompt : mput 또는 mget 명령시 대화형식 처리를 무시.
* hash : 파일의 전송상황 표시. #로 표시.

3) 파일 전송 명령어
* get : 하나의 파일을 Remote System에서 Local System으로 가져 온다.
* mget : 여러 개의 Local System으로 가져 온다.
* put : 하나의 파일을 Local System에서 Remote System으로 올린다.
* mput : 여러 개의 파일을 Remote System으로 올린다.

4) 기타 명령
* ! : 쉘로 잠시 나가 쉘명령을 수행.
* append : Local 시스템에서 원격시스템으로 파일의 전송시 이어받기.
* bell : 명령어 수행 후 벨소리 On/Off.
* case : 파일 전송시 대,소문자 구분을 변환.
* cdup : 상위 디렉토리로 이동.
* cr : 텍스트 파일 전송시 엔터코드(Carriage Return) 유무를 조정.
* delete : 파일 삭제.
* mdelete : 여러 파일 삭제.
* mode : 파일 전송 모드 선택.
* proxy : 지정된 명령어들을 선택적으로 사용.
* recv : 지정한 파일을 Local 시스템으로 전송받는다.
* remotehelp : 원격시스템의 도움말 출력.
* rename : 파일 이름 변경.
* reset : 지정한 환경을 모두 해제.
* rmdir : 디렉토리 삭제.
* send : 원격시스템으로 파일을 전송한다.
* struct : 전송할 파일의 구조를 지정.
* status : 지정한 환경 선택사항의 현재 상태 표시.
* trace : 패킷라인 검사.
* type : 파일 전송 모드 지정.
* user : 사용자 이름(Name:)과 암호 설정.

반응형
반응형



Tar(Tape Archive)는 지정된 여러 개의 파일들을 아카이브라고 부르는 하나의 파일로 만들거나 하나의 아카이브 파일에 집적되어 있는 여러개의 파일을 원래의 형태대로 추출해 내는 유닉스 쉘 명령어이다. tar 아카이브 파일에는 어떻게 파일명을 적든 상관없지만 tar로 묵었다는 것을 분명히 해주기 위해 ".tar" 라는 파일이름 확장자가 붙는다. tar 아카이브 파일 내에 들어있는 파일들은 압축되는 것이 아니라, 단지 하나의 파일로 모아지는 것뿐이다. tar라는 이름은 파일들이 주로 자기테이프에 백업되고, 이따금씩 검색되기도 하던 때로부터 유래하였다. 그러나, 요즘에는 tar 아카이브가 오히려 유닉스 시스템들간에 파일들을 전송하기 위해 좀더 자주 사용되고 있다.

1) tar 옵션
-c, --create : 새 저장 파일을 만든다.
-f, --file : 저장파일에 저장한다.
-x, --extract, --get : 묶는 것을 푼다.
-v, --verbose : 처리중인 과정을 화면에 보여줌.
-z, --gzip, --unzip : gzip으로 압축을 하거나 푼다. z는 모든 기능 포함. --gzip은 압축, --unzip은 압축해제
ex) tar -cvfz [파일명] [경로명] , tar -xvfz [파일명]

-j, --bzip2 : bzip2으로 압축하거나 푼다.
ex) tar -cvfj [파일명] [경로명] , tar -xvfj [파일명]

-r : tar 파일 끝에 파일을 추가한다.
-A : 압축파일에 tar 파일을 추가해서 넣을 때
ex) tar -rvf [tar 파일 경로] [추가파일 경로]

-p : 원본 파일의 퍼미션 유지
-d : 압축 파일과의 비교 (tar 파일과 해당 파일 시스템간의 차이점 확인시)
-t : 압축파일에 압축된 파일 리스트 확인 (tar 파일의 내용을 확인하고자 할 때 사용)
ex) tar -tvf [tar 파일 경로], tar -tvfz [gz 파일 경로]

2) gzip옵션
-1 : 빨리 압축하기
-9 : 압축률이 좋게 압축
ex) gzip -1 [파일 경로]
-d : 압축풀때
ex) gzip -d [gz 확장자 파일 경로]



반응형

'OS > Common' 카테고리의 다른 글

해당 바이너리의 비트 확인하기  (0) 2012.05.21
ftp 사용법 [명령어]  (0) 2011.10.20
unix/linux의 OS 32/64bit 확인 방법  (0) 2011.10.04
Shell에서 \n(newline) 발동하게 하기  (0) 2011.09.07
### 서버관리 명령  (0) 2011.08.21
반응형


참고 : http://uyeong.tistory.com/entry/%ED%8E%98%EB%8F%84%EB%9D%BC%EB%A6%AC%EB%88%85%EC%8A%A4-vsftpd-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0


먼저 rpm 패키지 설치 여부를 확인 한다.
#rpm -qa | grep vsftp

없다면 이곳에서 vsftpd 를 검색하여 해당 원하는 최신 버젼을 다운 받아서 해보자.
현재 2.3.4 정도가 나온 것 같다.
http://rpm.pbone.net/

다운 받았다면 rpm을 이용하여 다운 받은 곳으로 이동하여 설치!

rpm -ivh [파일경로]

설치가 완료되면 service vsftpd start로 시작시킬 수 있다.
설정은 /etc/vsftpd/vsftpd.conf에 있다. (root로 가능)

이후 iptables를 열어 수정한 뒤 21번 포트를 정상적으로 열어준다.
services iptables restart

netstat -na | grep tcp로 21번 포트가 정상적으로 열렸는지 확인한 다음 ftp를 이용해 주면 되겠다!


반응형

'OS > LINUX Common' 카테고리의 다른 글

tmpfs 설정하는 방법  (0) 2014.04.16
GNU tar의 특이성 , 체크섬 오류  (0) 2013.07.09
리눅스 계정관리 ----LINUX  (0) 2011.08.21
Linux에서 JDK 설치  (1) 2011.08.21
리눅스명령어 43개  (0) 2011.08.21
반응형

 




AIX에서 사용하는 사용하는 컴파일러는 IBM에서 제공하는 xl이라는 Compiler가 쓰인다.

이 xl은 xlc로도 쓰이며 _r 이 붙게 되면 Thread-Safe의 의미가 된다.
정확하게 어떤 부분이 Safe한지는 잘 모르겠다.

xl 씨리즈는 굉장히 많은 종류가 있는데 /usr/vacpp/bin에 보면 C++
그리고 /usr/vac/bin에 보면 C에 해당 하는 컴파일러 종류들을 살펴 볼 수 있겠다.


위의 그림은 /usr/vacpp/bin에 들어있는 컴파일러들의 모습.

-----------------------------------------------------------------------------------------------------------------------------
Hard Link 
똑같은 파일이 복사되어 있는 것으로 원복을 삭제해도 복사본의 내용은 남아 있으며 복사본의 내용을 추가하면 원본의 내용에도 추가되는 구조.

Symbolic Link
원본의 파일에 대한 위치와 정보만을 갖고 있음.
-----------------------------------------------------------------------------------------------------------------------------
위 컴파일러들은 모두 기본적으로 xlc의 Symbolic Link가 걸려 있는데 각자 자신이 호출된 이름에 맞는 동작을 한다고 한다.
따라서 xlc를 사용한 것과 xlC를 사용하는 부분은 구분해야 한다.


-----------------------------------------------------------------------------------------------------------------------------
출처 : http://susukang98.springnote.com/pages/377244.xhtml

오래된 머신에서는 xlc가 깔려 있다고 한다.
AIX에서 사용하는 옵션을 살펴보자면

 Version  [kernel 2.x, GCC 2.95.x and later]  4.3 and Later
 2a  shared library creation flag  -bM:SRE
 2b  shared library creation (C++)  cxx -shared -o
xlC -G (or -qmkshrobj)
obsolete:/usr/vacpp/bin/makeC++SharedLib -G -o
(was in /usr/ibmcxx/bin or /usr/lpp/xlC/bin/)
 2c  static archiver (C++)  ar
 3b  file extension  .so (or .a)
 4  executable link options -brtl
-bdynamic
-Lpath -lname
 5a runtime path specification  -blibpath:<path>
(by default, it is set to the arguments of -L)
 5b   Does not build the path for shared libraries into the executable  -blibpath:/usr/lib:/lib
 7 exports file/link option
(see notes)
 .exp
 9  runtime library path  LIBPATH
 11  runtime debugging  LDR_CNTRL
 17  dynamic loading /
dynamic symbol access
 loadquery/loadbind
(AIX 4.2) dlopen / dlsym
 18  utilities  dump -H
ldd (in AIX tools)
 19  documentation man: ld, dump


-----------------------------------------------------------------------------------------------------------------------------

1. 32bit/64bit 컴파일

기본적으로 AIX용 컴파일러는 프로그램을 32bit 모드로 컴파일한다. 원하는 bit 모드를 지정하려면 컴파일러, 아카이버, 링키지 에디터 등을 위해 아래와 같이 bit 모드 옵션이나 환경변수를 사용할 수 있다.

- 컴파일러 옵션: -q32/-q64

- OBJECT_MODE 환경변수: 32/64

- Archive(ar) 옵션: -X32/-X64/-X32_64

- 링키지 에디터(ld) 옵션: -b32/-b64

아래는 64-bit 오브젝트를 생성하도록 컴파일하고 확인하는 예..
  1. $ xlf -c -q64 bt.f
  2. $ dump -ov -X32_64 bt.o
  3. bt.o:
  4. ***Object Module Header***
  5. # Sections Symbol Ptr # Symbols Opt Hdr Len Flags
  6. 4 0x000026fe 81 0 0x0000
  7. Flags=( )
  8. Timestamp = "Feb 14 11:18:07 2002"
  9. Magic = 0x1f7 (64-bit XCOFF)

위와 같이 dump 명령을 사용하면 실행 파일 또는 오브젝트 파일이 32-bit 모드인지 64-bit 모드인지 확인할 수 있는데, 위의 예에서는 '64-bit XCOFF'로 되어 있으므로 64-bit 오브젝트 파일임을 알 수 있다. 또한, dump 명령의 옵션인 -X32_64, -X32, -X64는 대상 파일의 bit 모드를 지정하는 것으로, 모를 때는 위와 같이 -X32_64를 사용하면 된다.

AIX 4.3 환경에서 컴파일한 64-bit 프로그램은 AIX 5L에서는 실행되지 않으므로 AIX 5L용으로 다시 컴파일 해주어야 하지만, 32-bit 프로그램은 AIX5L 이전의 버전에서 컴파일 된 실행파일을 그대로 사용할 수 있다.

운영체제의 32/64-bit 모드는 'ls -l /unix' 명령으로 확인할 수 있는데 /unix가 /usr/lib/boot/unix_64에 링크되어 있으면 64-bit 커널이고, /usr/lib/boot/unix_mp에 링크되어 있으면 32-bit 커널이다.

xlC는 주석을 엄밀히 확인하고 일반적인 c style의 comment에 대해 warnning하는 경우가 있다.

그리고 char type을 default로 unsigned값으로 보고 있다. char타입에 대해 멀티플렛폼으로 작성할 여부가 있는 프로그램의 경우 변수의 type을 char보다는 __uint8같은 명확한 type으로 명확히 정의함이 괜찮은 방법이다.

"sn3crypt.h", line 338.18: 1540-0804 (W) The characters "/*" are detected in a comment.
"sn3ole.h", line 189.73: 1540-0804 (W) The characters "/*" are detected in a comment.
"sn3pcm.h", line 70.17: 1540-0848 (S) The macro name "SN3_ARCHITECTURE" is already defined with a different definition.
"sn3pcm.h", line 54.17: 1540-0425 (I) "SN3_ARCHITECTURE" is defined on line 54 of "sn3pcm.h".
"sn3xls.h", line 51.49: 1540-0804 (W) The characters "/*" are detected in a comment.
make: 1254-004 The error code from the last command is

aix5, xlC컴파일러에서 next를 실행한 오류

컴파일을 하다가 난 warnning과 error이다. 여러 플렛폼에 있는 다양한 컴파일러로 컴파일을 할때 한번에 되지 않느다면 역시 컴파일러의 옵션을 봐야 한다. 여러종류의 컴파일러를 만났을 때 당황하지 말고 믿을 수 있는 것은 컴파일러에서 생성한 경고나 오류, 그리고 컴파일러 옵션임을 잊지 않는다.

위의 경우는 (W)는 warnning (S)에서 에러를 냈으므로 70 line을 찾는다.






반응형
반응형

출처 : http://www.ip6.co.kr/?mid=linux_tip&sort_index=readed_count&listStyle=webzine&document_srl=653

LINUX
# getconf LONG_BIT


HP UX

11.xx 일 경우
# getconf KERNEL_BITS
64

10.xx 일 경우
# getconf LONG_MAX
2147483647
(64비트임)로 확인할 수 있습니다

AIX

현재 load된 kernel 이 32-bit 혹은 64-bit 인지 확인하는 명령어
# bootinfo -K
32

사용중인 machine이 32-bit 혹은 64-bit 인지 확인하는 명령어
# bootinfo -y
32


SOLARIS

# isainfo -kv
64-bit sparcv9 kernel modules
현재 이 시스템은 64bit 커널을 가지고 운영을 하는 시스템 이다.

# isainfo -kv
32-bit sparcv kernel modules
이 시스템은 32bit 커널을 가지고 운영을 하는 시스템이다.

# isainfo -v
64-bit sparcv9 applications 32-bit sparc applications
"-v"만 했을 경우 이 시스템에서는 32bit / 64bit 체계의 프로그램을 사용할 수 있다.

# isainfo -v
32-bit sparc applications
이 시스템은 32bit 체계의 프로그램만 구성하여 사용할 수 있다.
반응형

'OS > Common' 카테고리의 다른 글

ftp 사용법 [명령어]  (0) 2011.10.20
Tar 와 Gzip Bzip2사용법  (0) 2011.10.20
Shell에서 \n(newline) 발동하게 하기  (0) 2011.09.07
### 서버관리 명령  (0) 2011.08.21
서버점검 명령어  (0) 2011.08.20

+ Recent posts