Python code to monitor the conversion process
* Script will monitor the process for specific time after that it will kill it
* it will print the CPU%,Mem%
* First it will get the container PID , then the child PID
Method Example :
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 | def runOITprocess(timeout): commandtouse="cd /opt/app/oit ;./exsimple myfile.docx output.pdf > log.txt" ## conversion process proc=subprocess.Popen(commandtouse, shell=True) motherProcess=proc.pid ## Get Mother process , This process of new shell not real one pidtomonitor="ps -ef | grep "+ str (motherProcess)+" | grep exsimple | grep -v '/bin/sh' | awk '{print $2}'" findingChild = subprocess.Popen(pidtomonitor, shell=True,stdout=subprocess.PIPE) childProcess = (findingChild.stdout.read().strip()) print childProcess ## This is real process count=0 awkstring='{print $6" "$9" " $10}' fromtopcommand="top -b -n 1 -p "+ (childProcess)+" | tail -1 | awk '"+awkstring+"'" ## To get Memory%,CPU% timedOut=False detailsofProces=[] while True: #print proc.poll() if proc.poll() is not None: break topcommand = subprocess.Popen(fromtopcommand, shell=True,stdout=subprocess.PIPE) detailsofProces.append(topcommand.stdout.read()) time.sleep(1) stdout.write('\r Running for ' + str (count) +" s") stdout.flush() count=count+1 if timeout==count: os.system("kill -9 "+ (childProcess)) ## Killing the child process when time out is over print "Killed due to time out" timedOut=True CPUL=[] MemL=[] ResL=[] for kk in detailsofProces: details=kk.split() if details[0].startswith("RES"): continue ResL.append(details[0]) CPUL.append(details[1]) MemL.append(details[2].strip()) created=False if os.path.isfile("/opt/app/oit/output.pdf"): created=True distProcessStatus={"timedOut":timedOut,"Time":count,"CPU":CPUL,"Mem":MemL,"Res":ResL,"created":created} return distProcessStatus |
Example :
[sterin@sterin-linux oittest]$ ./oitUtilis.py
9988
Running for 7 s{'created': True, 'Mem': ['0.1', '0.2', '0.7', '2.7', '3.1', '3.4', '3.8', '3.8'], 'Res': ['11188', '31964', '107064', '427708', '484072', '536436', '607600', '600400'], 'timedOut': False, 'Time': 8, 'CPU': ['6.7', '13.3', '100.0', '100.0', '100.0', '100.0', '100.0', '100.0']}
Code is highlighted using : http://hilite.me/