셸 스 크 립 트 실시 간 검색 파일 변경

python 을 사용 하여 웹 개발 을 하고 있 습 니 다.현재 uwsgi 를 사용 하여 python 프로그램 을 호출 하 는 것 이 유행 하고 있 습 니 다.그러나 uwsgi 를 사용 하 는 동안 단점 이 있 습 니 다.소스 코드 를 변경 할 때마다 uwsgi 를 다시 시작 해 야 효력 이 발생 합 니 다.템 플 릿 파일 을 변경 하 는 것 도 귀 찮 은 사람 입 니 다.한 동안 반복 적 인 변경-재 부팅 을 거 친 후에 저 는 참 을 수 없습니다.프로그램 디 렉 터 리 의 파일 을 바 꾸 고 uwsgi 를 자동 으로 다시 시작 하기 로 결 정 했 습 니 다.사소한 재 부팅 작업 에 신경 쓰 지 않 아 도 됩 니 다.변경 여 부 를 판단 하기 위해 스 크 립 트 를 만 들 었 습 니 다.그리고 uwsgi 를 다시 시작 해 야 하 는 지 여 부 를 판단 하 는 데 시간 이 좀 걸 렸 습 니 다.
다음 스 크 립 트 내용 을 보 여 줍 니 다:

#!/bin/bash
# Author   : cold
# Filename  : checkchange.sh
# Useage   : sh checkchange.sh [dir]
checkisdir()
    # Have one argument
    # The argument is a directory
    for i in `ls $1 | sed -e 's/ /
/g'` do if [ -d $1/$i ] then if [ $i == "bin" -o $i == "lib" -o $i == "include" ] # ( virtualenv ) then continue fi dir="$1/$i" checkisdir $dir else files=$files'
'$1'/'$i fi done echo -e $files } while true do if [ -e /tmp/stat.tmp ] then for i in `checkisdir $1` do if [ -e /tmp/patch.tmp ] then stat $i | grep Change > /tmp/nstat.tmp rm -f /tmp/patch.tmp continue fi stat $i | grep Change >> /tmp/nstat.tmp done diff /tmp/stat.tmp /tmp/nstat.tmp > /tmp/patch.tmp if [ $? -eq 0 ] then sleep 10 else /etc/init.d/uwsgi.py restart # patch /tmp/stat.tmp /tmp/patch.tmp fi else for i in `checkisdir $1` do stat $i | grep Change >> /tmp/stat.tmp done continue fi done
여기 서 주요 테스트 변경 후 uwsgi 를 다시 시작 합 니 다.사용 방법:나의 bottle 프로그램 은/code/python 에서:

sh checkchange.sh /code/python &
svn 을 사용 하면 다음 코드 를 참고 할 수 있 습 니 다:

#!/bin/bash
# Author    : cold
# Filename   : checkupdate.sh
# Describle   : To Check update of svn

while true
do
    cd /code/python
    svn up | grep At > /dev/null 2>&1
    if [ $? -eq 0 ]
    then
        sleep 30
    fi

    svn up | grep Updated > /dev/null 2>&1
    if [ $? -eq 0 ]
    then
        /etc/init.d/uwsgi.py restart
    fi
done

좋은 웹페이지 즐겨찾기