Linux 에서 다 중 스 레 드 의 동시 다발 셸 스 크 립 트 를 모 의 합 니 다.

리 눅 스에 서 다 중 스 레 드 를 모 의 하 는 병렬 스 크 립 트 를 공유 합 니 다. 이 스 크 립 트 를 사용 하면 관련 명령 을 동시에 실행 할 수 있 습 니 다. 일반 for/while 순환 보다 순서대로 만 실행 할 수 있 는 효율 이 높 고 많은 서버 를 관리 할 때 매우 실 용적 입 니 다.     다음 스 크 립 트 기능 은 scp (rsync) 를 통 해 수천 대의 서버 에 업데이트 패 키 지 를 전달 하 는 것 입 니 다. 스 크 립 트 가 실 행 된 후 동시에 배경 에 50 개의 scp 프로 세 스 가 서버 에 패 키 지 를 전달 합 니 다.
#!/bin/bash
#     IP
ip=`cat iplist.txt|grep -v "#"|awk '{print $1}'` 
#    
dir='/usr/local/src'  
#      ,                ,         ,       
thead_num=50 
#   ID       
tmp_fifo_file="/tmp/$$.fifo" 
#         
mkfifo $tmp_fifo_file  
#       tmp_fifo_file    ,      4,    3-9      
exec 4<>$tmp_fifo_file  
#        ,     
rm -f $tmp_fifo_file    
#  for               
for ((i=0;i&4  
#           
for i in $ip  
do
#       ,    ,            ,         
         read -u4  
                {
#                 ,scp       ,             ,1000        
                         scp -P 1000 $1 $i:$dir 
#  3 ,       ,            
                        sleep 3
#       ,          
                        echo "" >&4  
                }&  #      
done
 wait  #            
exec 4>&-  #       
exit 0

관리자 가 다른 서버 와 ssh 신뢰 를 구축 하지 않 으 면 expect 자동 응답 명령 을 병발 스 크 립 트 의 순환 체 에 추가 하여 다음 과 같이 수정 할 수 있 습 니 다.
#!/bin/bash
 ip=`cat iplist.txt|grep -v "#"|awk '{print $1}'`
 dir='/usr/local/src'
 answer="yes"     #  yes/no    
passwd="123456"  #     
thead_num=50
 tmp_fifo_file="/tmp/$$.fifo"
 mkfifo $tmp_fifo_file
 exec 4<>$tmp_fifo_file
 rm -f $tmp_fifo_file
 for ((i=0;i&4
 for i in $ip
 do
         read -u4
                 {
                         expect <&4
                 }&
 done
 wait
 exec 4>&-
exit 0

좋은 웹페이지 즐겨찾기