diff options
author | Eliot Horowitz <eliot@10gen.com> | 2010-02-04 10:21:36 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2010-02-04 10:21:36 -0500 |
commit | f8273464b7daa74ed4a06952eccc892fb14b0f05 (patch) | |
tree | 6e70eae6f110b31b0038b39f00fec7341af4168c | |
parent | effedd950de374a91ab415e66f405a2ae4a3885b (diff) | |
download | mongo-f8273464b7daa74ed4a06952eccc892fb14b0f05.tar.gz |
bb files
-rw-r--r-- | buildscripts/cleanbb.py | 43 | ||||
-rw-r--r-- | buildscripts/utils.py | 23 |
2 files changed, 66 insertions, 0 deletions
diff --git a/buildscripts/cleanbb.py b/buildscripts/cleanbb.py new file mode 100644 index 00000000000..68a80127525 --- /dev/null +++ b/buildscripts/cleanbb.py @@ -0,0 +1,43 @@ + +import sys +import os +import utils +import time + +def killprocs( signal="" ): + cwd = os.getcwd(); + if cwd.find("buildscripts" ) > 0 : + cwd = cwd.partition( "buildscripts" )[0] + + killed = 0 + + for x in utils.getprocesslist(): + x = x.lstrip() + if x.find( cwd ) < 0: + continue + + pid = x.partition( " " )[0] + print( "killing: " + x ) + utils.execsys( "/bin/kill " + signal + " " + pid ) + killed = killed + 1 + + return killed + + +def cleanup( root ): + + # delete all regular files, directories can stay + # NOTE: if we delete directories later, we can't delete diskfulltest + for ( dirpath , dirnames , filenames ) in os.walk( root , topdown=False ): + for x in filenames: + os.remove( dirpath + "/" + x ) + + if killprocs() > 0: + time.sleep(3) + killprocs("-9") + +if __name__ == "__main__": + root = "/data/db/" + if len( sys.argv ) > 1: + root = sys.argv[1] + cleanup( root ) diff --git a/buildscripts/utils.py b/buildscripts/utils.py new file mode 100644 index 00000000000..06b7fa3c687 --- /dev/null +++ b/buildscripts/utils.py @@ -0,0 +1,23 @@ + +import re + +# various utilities that are handy + +def execsys( args ): + import subprocess + if isinstance( args , str ): + r = re.compile( "\s+" ) + args = r.split( args ) + p = subprocess.Popen( args , stdout=subprocess.PIPE , stderr=subprocess.PIPE ) + r = p.communicate() + return r; + +def getprocesslist(): + raw = "" + try: + raw = execsys( "/bin/ps -ax" )[0] + except Exception,e: + print( "can't get processlist: " + str( e ) ) + + r = re.compile( "[\r\n]+" ) + return r.split( raw ) |