출처:  http://web-dev.tistory.com/117


cut 이랑 uniq 사용법

예) 현재 접속된 ip만 확인(포트번호 제외)하여 중복된 것을 제거한 갯수

# netstat -an | grep ESTABLISHED | awk '{print ($2)}' |cut -f "1 2 3 4" -d .| sort | uniq -c

 

 

- date 관련

1. date 0없애기

# date '+%h %-d'
Aug 04
# date '+%h %0d'
Aug 4

 

2. date 전달 구하기

# TZ=KST+700 date +'%m'

 

3. data 전일 구하기

# TZ=KST+15 date +'%d'

 

 

- du 관련

1. 현재 디렉토리 내의 모든 파일의 용량을 보여줌

# du -sk * (du -sm * 및 du -sg * 가능)

 

2. 같은 파일시스템 내의 디렉토리 사이즈만 보여줌

# du -x

 

 

 

- awk 사용예제

# df -m | awk '{print$7}'

# df -m | awk '{print$1,$7}'

# lsvg -l rootvg | awk '{print"lslv -l "$1}' | sh

# df | awk '{print"lsfs "$7}'|sh

# lsdev -Cc adapter | grep ent | awk '{print"lsattr -El "$1}' | sh

# ps -ef | grep nmon |awk '{print"kill -9 "$2}' |sh 

# ls -l /etc/*.conf| awk '{print "grep pmtu " $9}' | sh

 

(디렉토리의 사용량 보기)
# ls -l|grep ^d | awk '{print"du -sk "$9}' | sh

 

(파일시스템 90% 이상 찾기)
# df -Pk|awk 'int($2) != 0'|grep -v Mounted|grep -v 가능|awk 'int($3*100/$2) > 89 {print $5, $6}'


(메모리 사용량 보기)
# vmstat 1 3 |tail -1 |awk '{used=$3*4096/1024/1024}{free=$4*4096/1024/1024}END{printf " used memory : %.0f MB\n free memory : %.0f MB\n",used,free}'


(CPU사용량보기)
# sar 1 2|tail -1|awk '{use=int($2+$3)}END{printf "%.0f\n",use}'


(HP에서 disk용량 보기)
# ioscan -fnC disk|grep rdsk|awk '{print "diskinfo "$2}'|sh|grep size|grep -v '0 Kbytes'|awk '{print int($2/1024/1024)}'

 

 

 

- 일일점검 shell(AIX 기준)

 

export LANG=C
DATE=`date '+%y%m%d'`
MONTH=`date '+%y%m'`
TIME=`date '+%H%M%S'`
HOST=`hostname`

SCRIPT_HOME=/CHECK
TEMP_HOME=$SCRIPT_HOME/TEMP
LOG_HOME=$SCRIPT_HOME/LOG
OUTPUT=$LOG_HOME/systemcheck_$HOST'_'$DATE.out
NET_INFO=$SCRIPT_HOME/TEMP/ifconfig.info
NET_TEMP=$SCRIPT_HOME/TEMP/ifconfig.count

 

####### MEMORY CHECK ########
MEMINUSE=`svmon -G  | grep "in use" | awk '{print ($3)}'`
MEMTOTAL=`svmon -G  | grep "memory" | awk '{print ($3/$2)*100}'`
MEMCOMP=`svmon -G  | grep "memory" | awk '{print ('$MEMINUSE'/$2*100)}'`
MEMNONCOMP=`echo "scale=3; $MEMTOTAL - $MEMCOMP"|bc`

 

####### NETWORK CHECK ########
> $NET_INFO < /dev/null
> $NET_TEMP < /dev/null

ifconfig -a | grep en | grep -v tcp | awk '{print $1}' | cut -c 1-3 > $NET_INFO
for NET_EN in $(<$NET_INFO)
  do
       netstat -v $NET_EN | grep Link | grep -iv Up | wc -l >> $NET_TEMP
  done

 

echo "CPU = `sar 1 2|tail -1|awk '{use=int($2+$3)}END{printf "%.0f\n",use}'`" > $OUTPUT
echo "MEM/COMP = $MEMCOMP" >> $OUTPUT
echo "MEM/NONCOMP = $MEMNONCOMP" >> $OUTPUT
echo "MEM/SWAP = `lsps -a | grep hd6 | awk '{ print $5 }'`" >> $OUTPUT
echo "DISK = `df -Pk|awk 'int($2) != 0'|awk 'int($3*100/$2) > 95 {print $5, $6}' | wc -l`" >> $OUTPUT
echo "NETWORK = `cat $NET_TEMP | grep -v 0 | wc -l`" >> $OUTPUT

CHECK=`lssrc -a | grep topsvcs | grep active | wc -l`
if [ $CHECK = 1 ] ; then
        echo "CLUSTER/DEMON = 0" >> $OUTPUT
        echo "CLUSTER/LOG = `cat /tmp/hacmp.out | wc -l`" >> $OUTPUT
else
        echo "CLUSTER/DEMON = 1" >> $OUTPUT
fi

echo "ERRORLOG = `errpt | grep -v ID | grep -v SOFTWARE | wc -l`" >> $OUTPUT

 

 

 

 

- 벤더별 메모리 사용량 체크

[IBM]

export LANG=C

SCRIPT_HOME=/수정하세요


####### MEMORY CHECK ########
MEMINUSE=`svmon -G  | grep "in use" | awk '{print ($3)}'`
MEMTOTAL=`svmon -G  | grep "memory" | awk '{print ($3/$2)*100}'`
MEMCOMP=`svmon -G  | grep "memory" | awk '{print ('$MEMINUSE'/$2*100)}'`
MEMNONCOMP=`echo "scale=3; $MEMTOTAL - $MEMCOMP"|bc`

echo "CPU = `sar 1 2|tail -1|awk '{use=int($2+$3)}END{printf "%.0f\n",use}'`"
echo "MEM/COMP = $MEMCOMP"
echo "MEM/NONCOMP = $MEMNONCOMP"
echo "SWAP = `lsps -a | grep hd6 | awk '{ print $5 }'`"


[HP]

export LANG=C

SCRIPT_HOME=/수정하세요

####### MEMORY CHECK ########
MEMFREE=`vmstat 1 2 | tail -1 | awk '{ printf "%-d\n", $5*4}'`
MEMTOTAL=`echo "phys_mem_pages/D" | adb /stand/vmunix /dev/kmem|tail -1|awk '{ printf "%-d\n", $2*4}'`
MEMUSE=`echo "scale=3; 100-($MEMFREE*100/$MEMTOTAL)"|bc`

echo "CPU = `sar 1 2|tail -1|awk '{use=int($2+$3)}END{printf "%.0f\n",use}'`"
echo "MEM = $MEMUSE"
echo "SWAP = `/usr/sbin/swapinfo -tm|tail -1|awk '{use=int($3*100/$2)}END{printf "%.0f\n",use}'`"

 

[SUN]

export LANG=C
SCRIPT_HOME=/수정하세요

####### MEMORY CHECK ########
MEMTOTAL=`prtconf|grep Mem|awk '{print $3}'`
MEMFREE=`sar -r 1 2|tail -1|awk '{use=int($2*8/1024)}END{printf "%.0f\n",use}'`
MEMUSE=`echo "scale=3; 100-($MEMFREE*100/$MEMTOTAL)"|bc`

echo "CPU = `sar 1 2|tail -1|awk '{use=int($2+$3)}END{printf "%s\n",use}'`"
echo "MEM = $MEMUSE"
echo "SWAP = `swap -l|tail -1|awk '{use=int(100-($5*100/$4))}END{printf "%s\n",use}'`"

 

 

 

- system 정보 저장하는 shell

 

#!/bin/sh

IdChk=`id | grep root | wc -l`

if [ $IdChk -eq 0 ]; then
  echo
  echo "You must login root... Try again..."
  echo
  exit
fi

OutFile=`hostname`"_"`date +%y%m%d`.out"


echo "-------------------------------------------"| tee -a $OutFile
echo "             시스템 정기 점검              "| tee -a $OutFile
echo "-------------------------------------------"| tee -a $OutFile

echo '1. 점검 일자 : ' `date` | tee -a $OutFile
echo '2. 장비 이름 : ' `hostname` | tee -a $OutFile
echo '3. 모 델 명 : ' `uname -M` | tee -a $OutFile
echo '4. 시리얼번호 : ' `uname -u` | tee -a $OutFile
echo '5. OS 버젼 : ' `oslevel -r` | tee -a $OutFile
echo '6. 커널 비트 : ' `bootinfo -K` | tee -a $OutFile

echo | tee -a $OutFile

echo | tee -a $OutFile
echo "  =====================" | tee -a $OutFile
echo "  CPU / MEMORY 정보확인" | tee -a $OutFile
echo "  =====================" | tee -a $OutFile
echo | tee -a $OutFile
echo "# lsdev -Cc processor" | tee -a $OutFile
lsdev -Cc processor  | tee -a $OutFile
echo | tee -a $OutFile
echo "# bootinfo -r"  | tee -a $OutFile
bootinfo -r  | tee -a $OutFile
echo | tee -a $OutFile
echo "# lscfg -vp |grep Size"  | tee -a $OutFile
lscfg -vp |grep Size | tee -a $OutFile
echo | tee -a $OutFile
echo "# lsps -a"  | tee -a $OutFile
lsps -a  | tee -a $OutFile
echo | tee -a $OutFile
echo | tee -a $OutFile
echo "  ==============" | tee -a $OutFile
echo "  DISKS 정보확인" | tee -a $OutFile
echo "  ==============" | tee -a $OutFile
echo | tee -a $OutFile
lscfg -vp | grep disk  | tee -a $OutFile
echo | tee -a $OutFile
echo "  =================" | tee -a $OutFile
echo "  ADAPTERS 정보확인" | tee -a $OutFile
echo "  =================" | tee -a $OutFile
echo | tee -a $OutFile
echo "# lsdev -Cc adapter"  | tee -a $OutFile
lsdev -Cc adapter  | tee -a $OutFile
echo | tee -a $OutFile
echo "  =================" | tee -a $OutFile
echo "  SLOT 정보확인" | tee -a $OutFile
echo "  =================" | tee -a $OutFile
echo | tee -a $OutFile
echo "# lsslot -c pci"  | tee -a $OutFile
lsslot -c pci | tee -a $OutFile
echo | tee -a $OutFile
echo "  ===================" | tee -a $OutFile
echo "  CDROM 장치 정보확인" | tee -a $OutFile
echo "  ===================" | tee -a $OutFile
echo | tee -a $OutFile
echo "# lsdev -Cc cdrom"  | tee -a $OutFile
lsdev -Cc cdrom  | tee -a $OutFile
echo "  ===================" | tee -a $OutFile
echo "  TAPE 장치 정보확인" | tee -a $OutFile
echo "  ===================" | tee -a $OutFile
echo | tee -a $OutFile
echo "# lsdev -Cc tape"  | tee -a $OutFile
lsdev -Cc tape  | tee -a $OutFile
echo | tee -a $OutFile
echo "  ===================" | tee -a $OutFile
echo "  File Systems 사용량" | tee -a $OutFile
echo "  ===================" | tee -a $OutFile
echo | tee -a $OutFile
echo "# df -Pk"  | tee -a $OutFile
df -Pk  | tee -a $OutFile
echo | tee -a $OutFile
echo "  ============" | tee -a $OutFile
echo "  LVM 정보확인" | tee -a $OutFile
echo "  ============" | tee -a $OutFile
echo | tee -a $OutFile
echo "# lsvg "  | tee -a $OutFile
lsvg| tee -a $OutFile
echo | tee -a $OutFile
echo "# lsvg -o"  | tee -a $OutFile
lsvg -o| tee -a $OutFile
echo | tee -a $OutFile
echo "# lspv "  | tee -a $OutFile
lspv| tee -a $OutFile
echo | tee -a $OutFile
echo "# lsvg |awk '{print "lsvg -l "$1}'|sh"  | tee -a $OutFile
lsvg |awk '{print "lsvg -l "$1}'|sh | tee -a $OutFile
echo | tee -a $OutFile
echo "  ================" | tee -a $OutFile
echo "  NETWORK 정보확인" | tee -a $OutFile
echo "  ================" | tee -a $OutFile
echo | tee -a $OutFile
echo "# ifconfig -a "  | tee -a $OutFile
ifconfig -a| tee -a $OutFile
echo | tee -a $OutFile
echo "# netstat -rn "  | tee -a $OutFile
netstat -rn| tee -a $OutFile
echo | tee -a $OutFile
echo "# EtherChannel "  | tee -a $OutFile
for ENT in `lsdev -Cc adapter|grep EtherChannel|awk '{print $1}'`
  do
  echo ""
  echo "== $ENT =="
        lsattr -El $ENT | tee -a $OutFile
  done
echo "# Duplex"  | tee -a $OutFile
for ENT in `lsdev -Cc adapter|grep ent|grep -v EtherChannel|awk '{print $1}'`
  do
  echo ""
  echo "== $ENT =="
        lsattr -El $ENT | grep speed | tee -a $OutFile
  done

echo "  ====================" | tee -a $OutFile
echo "  ENVIRONMENT 정보확인" | tee -a $OutFile
echo "  ====================" | tee -a $OutFile
echo | tee -a $OutFile
echo "# crontab -l "  | tee -a $OutFile
crontab -l| tee -a $OutFile
echo | tee -a $OutFile
echo "# cat /etc/passwd "  | tee -a $OutFile
cat /etc/passwd| tee -a $OutFile
echo | tee -a $OutFile
echo "# cat /etc/group "  | tee -a $OutFile
cat /etc/group| tee -a $OutFile
echo | tee -a $OutFile
echo "# cat /.profile "  | tee -a $OutFile
cat /.profile| tee -a $OutFile
echo | tee -a $OutFile
echo "# cat /etc/filesystems "  | tee -a $OutFile
cat /etc/filesystems| tee -a $OutFile
echo | tee -a $OutFile
echo "# cat /etc/environment "  | tee -a $OutFile
cat /etc/environment| tee -a $OutFile
echo | tee -a $OutFile
echo "# ulimit -a "  | tee -a $OutFile
ulimit -a| tee -a $OutFile
echo | tee -a $OutFile
echo "# lsattr -El sys0 "  | tee -a $OutFile
lsattr -El sys0| tee -a $OutFile
echo | tee -a $OutFile
echo "# lsattr -El aio0 "  | tee -a $OutFile
lsattr -El aio0 | tee -a $OutFile
echo | tee -a $OutFile
echo "# vmo -a|egrep 'perm|repage' "  | tee -a $OutFile
vmo -a|egrep "perm|repage" | tee -a $OutFile
echo | tee -a $OutFile
echo "  ==============" | tee -a $OutFile
echo "  Error Log 확인" | tee -a $OutFile
echo
"  ==============" | tee -a $OutFile
echo | tee -a $OutFile
echo "# errpt"  | tee -a $OutFile
errpt  | tee -a $OutFile
echo | tee -a $OutFile
echo "  ========" | tee -a $OutFile
echo "  LPP 확인" | tee -a $OutFile
echo "  ========" | tee -a $OutFile
echo | tee -a $OutFile
echo "# lppchk -v"  | tee -a $OutFile
lppchk -v  | tee -a $OutFile
echo | tee -a $OutFile
echo "# lslpp -l"  | tee -a $OutFile
lslpp -l  | tee -a $OutFile
echo | tee -a $OutFile
echo "  ========" | tee -a $OutFile
echo "  ETC 확인" | tee -a $OutFile
echo "  ========" | tee -a $OutFile
echo | tee -a $OutFile
echo "# lsconf"  | tee -a $OutFile
lsconf | tee -a $OutFile
echo | tee -a $OutFile
echo "# lscfg -vp "  | tee -a $OutFile
lscfg -vp | tee -a $OutFile
echo | tee -a $OutFile
echo "# ps -ef "  | tee -a $OutFile
ps -ef | tee -a $OutFile
echo | tee -a $OutFile
echo "# bootlist -m normal -o "  | tee -a $OutFile
bootlist -m normal -o | tee -a $OutFile
echo | tee -a $OutFile

echo 'Ending Date : ' `date` | tee -a $OutFile

 

 

 

 

- 사용자 자동 생성 shell

 * 인자값 입력형(예: user.sh 아이디 비번)

 

OID=`cat /etc/passwd|tail -1|cut -f 3 -d :`
NID=`echo "scale=0; $OID + 1"|bc`
UID=$1
x() {                                         
LIST=                                         
SET_A=                                        
for i in "$@"                                 
do                                            
        if [ "$i" = "admin=true" ]            
        then                                  
                SET_A="-a"                    
                continue                      
        fi                                    
        LIST="$LIST \"$i\""                   
done                                          
eval mkuser $SET_A $LIST                      
}                                             
x id='$NID' home='/u/$UID' rlogin='false' $UID

PW=$2
echo "$UID:$PW"|chpasswd
pwdadm -c $UID
echo "$UID 생성 완료"

 

 

 * 대화형(예:user.sh)

 

OID=`cat /etc/passwd|tail -1|cut -f 3 -d :`
NID=`echo "scale=0; $OID + 1"|bc`
read UID?'사번을 입력하세요 => '

x() {                                         
LIST=                                         
SET_A=                                        
for i in "$@"                                 
do                                            
        if [ "$i" = "admin=true" ]            
        then                                  
                SET_A="-a"                    
                continue                      
        fi                                    
        LIST="$LIST \"$i\""                   
done                                          
eval mkuser $SET_A $LIST                      
}                                             
x id='$NID' home='/u/$UID' rlogin='false' $UID

read PW?'비밀번호를 입력하세요 => '

echo "$UID:$PW"|chpasswd

pwdadm -c $UID

echo "$UID 생성 완료"

 

 

- DD 사용(원격)

 

블럭 디바이스
# dd if=/dev/hd3| rsh localhost "dd of=/dev/lv00 bs=1920000"


캐릭터 디바이스
# dd if=/dev/rlv01 ibs=64k obs=512 | rsh hostname dd ibs=512 obs=64k of=/dev/rlv01

 

 

 

- tar 사용

1. Compress(압축)명령
 . tar(create tape archives, and add or extract files)
:파일들을 묶어주는 명령들이다.(압축하지는 않습니다.)

ex) tar -cvf [만들 filename.tar] *    ==> 묶을 때 보통 tar이라는 확장자를 씁니 다.
그러면 filename.tar이라는 파일이 생성 됩니다.

tar -xvf [풀 filename]    ==> 묶였던 파일들이 다시 풀립니다.

compress, uncompress
: 파일을 압축하는 명령입니다. compress는 압축 uncompress는 풀어주는 명령입 니다.

ex) compress [filename]    ==> filename.Z 가 생성됩니다.

# compress temp.tar     ==> temp.tar.Z 가 생성됩니다.

-v 는 압축률을 보여줍니다.

# compress -v temp.tar

 compress는 tar처럼 새로운 파일을 만드는 것이 아니고 원본파일을 압축하기만 합니다.

# uncompress [압축한 filename]     ==> 원래의 파일이 됩니다.

. gzip, gunzip
: 역시 파일을 압축하고 푸는 명령입니다. 보통 compress보다 성능이 좋습니다. 역시 -v option이 있습니다.

ex) gzip [fileanme]     ==> filename.gz 가 생성

#  gzip -v temp.tar     ==> temp.tar.gz 가 생성됨

gunzip [filename]

#  gunzip temp.tar.gz    ==> 원본인 temp.tar가 됨

 

 

2. tar백업(파이프 이용)

# tar -cvf - .|(cd /logdata_recover/ && tar -xvf -)

 

# tar -cvf- <path> | rsh <t_mach> "cd <path> && tar -xvf-"

 

 

 

 

 

- AIO관련 (aio활성화 후 재부팅 해야 적용되는 줄 알았는데...)

# mkdev -l aio0

이렇게 하거나

# smitty aio  -> Configure Defined Asynchronous I/O

 

- AIX(ksh)에서 파일명 자동완성(리눅스에서 일부만 입력후 tab키 누르는 것과 같은 효과)

[ESC] + [=] 실행가능 list up

[ESC] + [\] 파일명 자동완성

 

 

- AIX에서 최대 생성가능 스레드 개수(확인 방법)

기본값은 process당 32767 개

# vi /usr/include/pthread.h 파일을 열어서  PTHREAD_THREADS_MAX  값을 확인 함

 

 

- process top10구현

# ps gu |head -n 1; ps gu | egrep -v "CPU|kproc"|sort +2b -3 -n -r | head -n 10

 

- svmon 상위 15개 용량

# svmon -Pt15|perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'

 

 

- 터미널(secure CRT등) 글자 깨질때(예: 바이너리파일을 열때  cat /usr/bin/ls)

# echo <ctrl+V><Ctrl+O><Enter>

 

 

- 미들웨어 버전 확인

# su - jeus -c 'jeusadmin -fullversion'

# su - webtob -c 'wsadmin -v'

# su - anylink -c 'tmadmin -v'

# su - tmax -c 'tmadmin -v'

+ Recent posts