| #!/usr/bin/env python |
| # coding: UTF-8 |
| |
| # pt-kill |
| # |
| # Copyright(c) 2015 Uptime Technologies, LLC. |
| |
| import os, sys |
| libpath = os.path.abspath(os.path.dirname(sys.argv[0]) + "/../lib") |
| sys.path.append(libpath) |
| |
| import getopt |
| import os |
| import signal |
| |
| import log |
| |
| def usage(): |
| print "" |
| print "Usage: " + os.path.basename(sys.argv[0]) + " [option...] [command] [pid]" |
| print "" |
| print "Commands:" |
| print " cancel Cancel a running query." |
| print " terminate Terminate a backend with canceling query." |
| print "" |
| print "Options:" |
| print " --help Print this help." |
| print "" |
| |
| if __name__ == "__main__": |
| try: |
| opts, args = getopt.getopt(sys.argv[1:], "", |
| ["help", "debug"]) |
| except getopt.GetoptError, err: |
| print str(err) |
| usage() |
| sys.exit(2) |
| |
| debug = False |
| |
| for o, a in opts: |
| if o in ("--debug"): |
| debug = True |
| log.setLevel(log.DEBUG) |
| elif o in ("--help"): |
| usage() |
| sys.exit(0) |
| else: |
| print "unknown option: " + o + "," + a |
| sys.exit(1) |
| |
| log.debug(args) |
| |
| if len(args) < 2: |
| log.info("Specify signal command with pid.") |
| usage() |
| sys.exit(0) |
| |
| command = args[0] |
| pid = args[1] |
| |
| if command == 'cancel': |
| sig = signal.SIGINT |
| elif command == 'terminate': |
| sig = signal.SIGTERM |
| else: |
| log.error("Unknown command %s" % command) |
| sys.exit(1) |
| |
| try: |
| os.kill(int(pid), sig) |
| except OSError, err: |
| log.error(err) |
| sys.exit(1) |
| |
| sys.exit(0) |