'Technical Note/LINUX'에 해당되는 글 5건

Technical Note/LINUX

test 프로세스 모두 죽이기 제1안

  # kill -9 `ps -ef | grep test | awk '{print $2}'`


test 프로세스 모두 죽이기 제2안

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


test 프로세스 모두 죽이기 제3안

  # killall -KILL test


test 프로세스 모두 죽이기 쉘 스크립트 

  #!/bin/sh
  for PID `ps -ef | grep test | grep -v grep | awk '{print $2}'`
  do
  kill -9 $PID
  done


test User로 실행 되어지는 모든 프로세스 죽이기

  # kill -9 `ps -ef | awk '$1=="test" {print $2}'`

저작자 표시 비영리 변경 금지


Technical Note/LINUX

0. 개요


서버 작업을 하다 보면, 여러대 서버에 접속 해서 같은 작업을 해야 하는 경우가 있다.


하나하나의 서버에 다 접속 해야 되고, 명령어도 다 써줘야 한다.


이런 작업이 자주 있을때, 효율 적으로 작업 할 수 있도록 간단한 스크립트를 만들어 보겠다.




1. 준비


SSH 자동 로그인 스크립트를 만드릭 위해서는 sshpass 라는 툴이 필요 하다.


우분투에서는 apt-get -y install sshpass 로 바로 설치가 가능 하고


centos, sulinux..등은 소스를 다운 받아 컴파일 해줘야 한다.




2. sshpass 툴 옵션


sshpass -p 패스워드 ssh 아이디@도메인 명령어


    예) sshpass -p 123456 ssh abcde@abcde.co.kr


이때, -p 옵션 다음에 나오는 패스워드를 위와 같이 사용하기 싫으면 vi로 파일을 만들어 거기에 적어 놓고 사용 할 수 있다


    예) vi pass


         123456




         sshpass -f pass ssh abcde@abcde.co.kr




이렇게 간단하게 로그인 되면 좋겠지만. 처음 접속 하는 서버나, 디스크 등의 문제로 교체 및 재설치 하는 경우


known host에 저장 할 것인가? 라는 메세지가 뜬다. 이럴때 아래와 같이 사용하면 된다.


     예) sshpass -f pass ssh -oStrictHostKeyChecking=no ssh abcde@abcde.co.kr


-oStrictHostKeyChecking=no 옵션은 known host에 저장 할 것이냐는 질문에 yes를 누르고 넘어가는 옵션이다.




3. SSH 자동 로그인 스크립트 예제


접속 해서 작업 해야 하는 서버가 1~2대 일경우는 이런 스크립트도 필요 없이 작업 하면 되지만.


10대 20대 30대 이렇게 점점 만아 질수록, 한숨 부터 나온다.


vi login.sh


#!/bin/bash


for i in $(seq 1 10); do

        sshpass -f pass ssh -oStrictHostKeyChecking=no root@192.168.0.${i} "ls; exit;"

done


위 예제는 IP 192.168.0.1에서 192.168.0.10번 서버까지 접속 해서 ls 명령을 내리는 스크립트 이다.


########################################################################################


vi hosts.allow.sh


#!/bin/bash


for i in $(seq 1 10); do

        sshpass -f password ssh -oStrictHostKeyChecking=no root@192.168.0.${i} "echo "ALL : 192.168.100.3" >> /etc/hosts.allowt; exit"

done


위 예제는 hosta.allow에 ALL : 192.168.100.3 을 추가하는 내용이다.




4. 마무리


위 스크립트는 간단 하지만, 많은 서버에 작업을 해야 할 경우 아주 유용하다.


간단한 예를 들어 설명을 했지만, 주기적으로 해야 되는 패스워드 변경 작업 등


조금만 더 생각 해보면 많은 곳에 사용 할 수 있는, 유용한 스크립트이다.

Technical Note/LINUX

auto_cmd.sh


#!/bin/sh


CMD="$1"

CMD2="$2"

while [ 1 ]; do

eval $CMD

sleep $CMD2

done


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

실행


auto_cmd.sh "명령어"  반복주기(초)


ex) auto_cmd.sh "ls -al" 60       : 60초 마다 ls -al 명령어 수행한 결과를 보여준다.



아래는 매 시간 마다 실행이 되고, 날짜가 변경 될 경우 처리하는 소스이다.



#!/sbin/sh


CMD="$1"

CMD2="$2"

CMD3="$3"


DATE1=`date +%d`


while [ 1 ]; do


NOWDATE1=`date +%d`


#change date check

if [ "$DATE1" != "$NOWDATE1" ]; then

 DATE1=$NOWDATE1

 cat ./monitor.txt >> ./monitor_backup.txt

 rm -rf ./monitor.txt

fi


DATEMM=`date +%M`


# xx hour 1min write log

if [ "$DATEMM" = "01" ]; then

 eval $CMD

 eval $CMD2

fi


sleep $CMD3


done


실행



auto_cmd.sh "date >> monitor.txt" "vmstat >> monitor.txt" 60 


1번째 인자 : 현재 시간을 모니터.텍스트 파일로 저장

2번째 인자 : 서버 상태를 모니터.텍스트 파일로 저장

3번째 인자 : 60초 주기로 스크립트를 반복


Technical Note/LINUX

/proc/sys/kernel/shmmax - The maximum size of a shared memory segment. 

/proc/sys/kernel/shmmni - The maximum number of shared memory segments. 

/proc/sys/kernel/shmall - The maximum amount of shared memory that can be allocated. 

/proc/sys/kernel/sem - The maximum number and size of semaphore sets that can be allocated.

Technical Note/LINUX

- VSZ : 가상 메모리 크기, 현재 디바이스 맴핑에서 제외되어 있다

- RSS : 실제 메모리, 스와핑이 되지 않은 물리적인 메모리가 해당 task 에 쓰이고 있는 양을 의미

VSZ 크기 만큼을 reserve 해 놓고 실제로 물리적 메모리가 사용하고 있는 것은 RSS 크기 만큼

만약 프로세스가 메모리 반환 없이 메모리 누수가 발생될 경오 VSZ 값이 증가 하게  됨

ps -u로 확인 가능


1
블로그 이미지

zzikjh