#!${configuration:openoffice_python} import signal import time import subprocess import sys import os PID_FILE = "${configuration:oood_pid}" OOOD_COMMAND = " PYTHONPATH=${configuration:openoffice_uno} " + \ " ${configuration:openoffice_python} " + \ " ${software_definition:oood_software}/runserw.py " FLUSH_COMMAND = " PYTHONPATH=${configuration:openoffice_uno} " + \ " ${configuration:openoffice_python} " + \ " ${software_definition:oood_software}/start.py " + \ " --flush > /dev/null 2>&1 /dev/null" class Oood: pid = None def __init__(self): self.setsignals() def run(self): subprocess.call(OOOD_COMMAND + "--start > /dev/null 2>&1 /dev/null &", shell=True) subprocess.call(FLUSH_COMMAND, shell=True) while 1: if os.path.exists(PID_FILE): self.pid = int(open(PID_FILE, "r").read()) time.sleep(40) time.sleep(5) def setsignals(self): signal.signal(signal.SIGTERM, self.stop) signal.signal(signal.SIGHUP, self.stop) signal.signal(signal.SIGINT, self.stop) signal.signal(signal.SIGUSR1, self.stop) signal.signal(signal.SIGUSR2, self.stop) def stop(self, sig, frame): if os.path.exists(PID_FILE): self.pid = int(open(PID_FILE, "r").read()) #print self.pid else: print "Pid File does not exist!" subprocess.call(OOOD_COMMAND + "--stop > /dev/null 2>&1 /dev/null ", shell=True) subprocess.call(FLUSH_COMMAND, shell=True) if self.pid is not None: try: os.kill(self.pid, 9) print "Kill pid (%s)" % self.pid except OSError: #print "Pid (%s) already stopped. " % self.pid pass # Ignore is ok, it means stop command works. sys.exit(0) def main(): pp = Oood() pp.run() if __name__ == '__main__': main()