1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/usr/bin/python
import os
import sys
import time
from retrace import *
if __name__ == "__main__":
now = int(time.time())
logfile = "%s/cleanup.log" % CONFIG["LogDir"]
try:
log = open(logfile, "a")
except IOError, ex:
print "Error opening log file: %s" % ex
sys.exit(1)
log.write(time.strftime("[%Y-%m-%d %H:%M:%S] Running cleanup\n"))
# kill tasks running > 1 hour
ps_output = run_ps()
running_tasks = get_running_tasks(ps_output)
for pid, taskid, runtime in running_tasks:
# ToDo: 5 = mm:ss, >5 = hh:mm:ss
if len(runtime) > 5:
log.write("Killing task %d running for %s\n" % (taskid, runtime))
kill_process_and_childs(pid, ps_output)
# kill orphaned tasks
running_tasks = get_running_tasks()
running_ids = []
for pid, taskid, runtime in running_tasks:
running_ids.append(taskid)
for task in get_active_tasks():
if not task in running_ids:
log.write("Cleaning up orphaned task %d\n" % task)
cleanup_task(task)
# clean up old tasks
try:
files = os.listdir(CONFIG["SaveDir"])
except OSError, ex:
files = []
log.write("Error listing task directory: %s\n" % ex)
for filename in files:
try:
taskid = int(filename)
except:
continue
dirpath = "%s/%s" % (CONFIG["SaveDir"], filename)
if os.path.isdir(dirpath) and \
(now - os.path.getatime(dirpath)) / 3600 >= CONFIG["DeleteTaskAfter"]:
log.write("Deleting old task %s\n" % filename)
call(["rm", "-rf", dirpath])
log.close()
|