diff --git a/telegram-notify-daemon b/telegram-notify-daemon index 351b958..053e9b5 100755 --- a/telegram-notify-daemon +++ b/telegram-notify-daemon @@ -11,6 +11,7 @@ import sys import os import argparse import logging +import atexit from telepot.loop import MessageLoop from watchdog.observers import Observer from watchdog.events import PatternMatchingEventHandler @@ -183,7 +184,8 @@ def setDefaults(): 'daemon': False, 'token': '', 'pair_pin': '1234', - 'spool_dir': '/var/spool/telegram-notify' + 'spool_dir': '/var/spool/telegram-notify', + 'pid_file': '/var/run/telegram-notify/telegram-notify.pid' } @@ -235,6 +237,26 @@ def initLogger(): logging.basicConfig(filename=logFile,level=logLevel,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) +def checkPIDFile(): + PIDFile = configParser.get('general', 'pid_file') + try: + pf = open(PIDFile,'r') + pid = int(pf.read().strip()) + pf.close() + except (IOError, TypeError): + pid = None + if pid: + logger.error('pidfile %s already exist. Daemon already running?' % PIDFile) + sys.stderr.write('pidfile %s already exist. Daemon already running?' % PIDFile) + sys.exit(1) + atexit.register(delPIDFile) + open(PIDFile,'w+').write("%s\n" % str(os.getpid())) + logger.info('Created PIDfile %s' % PIDFile) + +def delPIDFile(): + PIDFile = configParser.get('general', 'pid_file') + os.remove(PIDFile) + logger.info('Removed PIDfile %s' % PIDFile) def checkSpoolDir(): spool_dir = configParser.get('general', 'spool_dir') @@ -281,6 +303,7 @@ setDefaults() parseCmdLine() readConfigFile() initLogger() +checkPIDFile() checkSpoolDir() initBot() diff --git a/telegram-notify.conf.default b/telegram-notify.conf.default index 7c21fbc..6f29a98 100644 --- a/telegram-notify.conf.default +++ b/telegram-notify.conf.default @@ -5,3 +5,4 @@ pair_pin = 1234 spool_dir = /var/spool/telegram-notify log_file = /var/log/telegram-notify.log log_level = INFO +pid_file = /var/run/telegram-notify/telegram-notify.pid