使用Linux shell实时检测文件变更

Fri 18 May 2012

使用python做web开发,现在流行使用uwsgi调用python程序,但是使用uwsgi一段时间发现有一个弊端,就是每次更改源代码后必须重启uwsgi才能生效,包括更改模板文件也是,我是个懒人,再经过一段时间反复的更改-重启后我终于忍受不了,决定写一个脚本来定时程序目录的文件改动,并及时自动重启uwsgi,来解放我的双手可以不用理会这些琐碎的重启工作. 用了点时间来编写了一个脚本用来判断是否更改,然后判断是否需要重启uwsgi.

下面放出脚本内容:

#!/bin/bash
# Author      : cold
# Homepage    : http://www.linuxzen.com
# 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/ /\n/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'\n'$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
# Homepage      : http://www.linuxzen.com
# 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

Category: shell Tagged: 检测 文件 实时 变更 uwsgi shell python Linux bottle

comments


Gentoo下搭建python web环境(nginx+bottle+virtualenv+uwsgi)

Wed 16 May 2012

最近根据Gentoo官方文档整了一台Gentoo的虚拟机,感觉还是不错的,决定放弃CentOS投奔Gentoo,这几天研究NoSQL mongodb和python的bottle框架,web.py效率不是很好,而且是类级,bottle使用装饰器(虽然对她还是懵懂阶段,但是貌似很强大).感觉bottle更加强大和接近python,没有封装太多东西,django只能依照她的思想来做自己的事,最后还是选择了bottle来进入python的web世界,web服务器同样选择nginx.virtualenv可以让一个应用有一个相对独立的环境,特别用于多解释器环境或者经常变更的环境.uwsgi是web和python的中间件(可以这么解释吧).

环境:

系统:Gentoo ip:192.168.3.1

好吧废话不多说,Gentoo安装过程这里不再详述,官方文档很详细,下面记录安装配置过程. 首先Gentoo没有默认安装vim,先安装vim:

emerge vim

安装配置Python

最新版的Gentoo安装完毕后默认使用python3.2,而我惯用Python2.7.先首先安装python2.7. Gentoo使用emerge包管理,安装Python2.7:

cd /usr/portage/dev-lang …

Category: Linux Tagged: web virtualenv uwsgi python Gentoo bottle nginx

comments

Read More

CentOS下搭建python web生产环境(nginx+web.py+uwsgi)

Thu 19 April 2012

前面都一篇文章介绍介绍了Ubuntu下web.py的开发环境搭建,这篇文章主要来介绍如何让web.py结合nginx来实现生产环境

首先使用环境介绍: 系统: CentOS 5.5 32位

Python版本:2.7.2

nginx:1.0.13

ip:192.168.3.3/24

由于CentOS默认自带都python(2.4.3)版本较低,所以我们采用手动编译安装python的方式来使用python 2.7.2

首先安装python 2.7.2

cd /usr/src/
mkdir python
cd python
#下载python2.7.2
wget http://www …

Category: Linux Tagged: web.py web uwsgi spawn-fcgi python nginx

comments

Read More
Page 1 of 1

Fork me on GitHub