Loading logs/sopds.log +78 −0 Original line number Diff line number Diff line Loading @@ -147,3 +147,81 @@ mysql.connector.errors.DatabaseError: 1205 (HY000): Lock wait timeout exceeded; 2014-04-20 23:21:39,495 INFO sopdsDaemon starting... 2014-04-20 23:21:39,545 INFO sopdsDaemon entering in main loop... 2014-04-20 23:21:39,545 INFO ***** Starting sopds-scan... 2014-04-20 23:28:48,768 INFO sopdsDaemon __init__()... 2014-04-20 23:28:48,769 INFO sopdsDaemon stop()... 2014-04-20 23:29:08,057 INFO sopdsDaemon __init__()... 2014-04-20 23:29:08,058 INFO sopdsDaemon start()... 2014-04-20 23:29:08,122 INFO sopdsDaemon entering in main loop... 2014-04-20 23:29:08,123 INFO ***** Starting sopds-scan... 2014-04-20 23:42:40,180 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-000024-030559.zip book file = 25453.fb2 2014-04-20 23:42:41,956 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-000024-030559.zip book file = 25608.fb2 2014-04-21 00:47:58,326 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-074392-091839.zip book file = 91582.fb2 2014-04-21 01:12:10,713 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-365000-370999.zip book file = 366784.fb2 2014-04-21 01:49:00,572 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-182285-187147.zip book file = 185993.fb2 2014-04-21 02:03:50,470 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120844.fb2 2014-04-21 02:03:51,091 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120845.fb2 2014-04-21 02:03:51,995 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120867.fb2 2014-04-21 02:03:52,292 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120869.fb2 2014-04-21 02:03:53,231 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120882.fb2 2014-04-21 02:03:57,218 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 121005.fb2 2014-04-21 02:04:37,037 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 122485.fb2 2014-04-21 02:05:14,522 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 124269.fb2 2014-04-21 02:05:46,782 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126076.fb2 2014-04-21 02:05:52,301 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126390.fb2 2014-04-21 02:05:56,028 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126570.fb2 2014-04-21 02:05:57,324 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126620.fb2 2014-04-21 02:06:05,150 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129300.fb2 2014-04-21 02:06:05,204 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129304.fb2 2014-04-21 02:06:05,266 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129305.fb2 2014-04-21 02:06:09,021 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129556.fb2 2014-04-21 02:06:13,436 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129813.fb2 2014-04-21 02:22:12,199 INFO Books added : 288522 2014-04-21 02:22:12,199 INFO Books skipped : 0 2014-04-21 02:22:12,200 INFO Books DB entries deleted : 0 2014-04-21 02:22:12,200 INFO Books in archives: 282953 2014-04-21 02:22:12,200 INFO Archives scanned : 162 2014-04-21 02:22:12,200 INFO Archives skipped : 0 2014-04-21 02:22:12,201 INFO Bad archives : 0 2014-04-21 02:22:12,201 INFO Time estimated:2 hours, 53 minutes, 4 seconds. 2014-04-21 04:00:17,635 INFO ***** Starting sopds-scan... 2014-04-21 04:03:58,687 INFO Books added : 288522 2014-04-21 04:03:58,722 INFO Books skipped : 5569 2014-04-21 04:03:58,723 INFO Books DB entries deleted : 0 2014-04-21 04:03:58,723 INFO Books in archives: 282953 2014-04-21 04:03:58,723 INFO Archives scanned : 197 2014-04-21 04:03:58,723 INFO Archives skipped : 127 2014-04-21 04:03:58,724 INFO Bad archives : 0 2014-04-21 04:03:58,724 INFO Time estimated:4 hours, 34 minutes, 50 seconds. 2014-04-21 08:00:11,529 INFO ***** Starting sopds-scan... 2014-04-21 08:03:16,654 INFO Books added : 288522 2014-04-21 08:03:16,655 INFO Books skipped : 11138 2014-04-21 08:03:16,655 INFO Books DB entries deleted : 0 2014-04-21 08:03:16,655 INFO Books in archives: 282953 2014-04-21 08:03:16,655 INFO Archives scanned : 232 2014-04-21 08:03:16,655 INFO Archives skipped : 254 2014-04-21 08:03:16,656 INFO Bad archives : 0 2014-04-21 08:03:16,656 INFO Time estimated:8 hours, 34 minutes, 8 seconds. 2014-04-21 08:19:14,396 INFO sopdsDaemon __init__()... 2014-04-21 08:19:14,397 INFO sopdsDaemon restart()... 2014-04-21 08:19:14,397 INFO sopdsDaemon stop()... 2014-04-21 08:19:16,400 INFO sopdsDaemon start()... 2014-04-21 08:19:16,452 INFO sopdsDaemon entering in main loop... Traceback (most recent call last): File "./sopdsd.py", line 224, in <module> daemon.restart() File "./sopdsd.py", line 195, in restart Daemon.restart(self) File "./sopdsd.py", line 151, in restart self.start() File "./sopdsd.py", line 179, in start Daemon.start(self) File "./sopdsd.py", line 91, in start self.run() File "./sopdsd.py", line 205, in run self.scanner.init_statas() AttributeError: 'opdsScanner' object has no attribute 'init_statas' 2014-04-21 08:19:16,456 INFO sopdsDaemon delpid()... 2014-04-21 08:20:50,251 INFO sopdsDaemon __init__()... 2014-04-21 08:20:50,252 INFO sopdsDaemon start()... 2014-04-21 08:20:50,300 INFO sopdsDaemon entering in main loop... 2014-04-21 08:20:50,301 INFO ***** Starting sopds-scan... py/sopdsd.py +1 −0 Original line number Diff line number Diff line Loading @@ -202,6 +202,7 @@ class opdsDaemon(Daemon): while True: t=time.localtime() if (((self.cfg.DAY_OF_WEEK==0) or (self.cfg.DAY_OF_WEEK==t.tm_wday+1)) and (t.tm_hour*60+t.tm_min in self.cfg.SCAN_TIMES)) or (self.cfg.SCAN_ON_START and not self.start_scan): self.scanner.init_stats() self.scanner.log_options() self.scanner.scan_all() self.scanner.log_stats() Loading py/sopdsd1.pydeleted 100755 → 0 +0 −143 Original line number Diff line number Diff line #!/usr/bin/env python3 #http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/ import sys, os, time, atexit from signal import SIGTERM from sopdsscanner import opdsScanner class Daemon: """ A generic daemon class. Usage: subclass the Daemon class and override the run() method """ def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): self.stdin = stdin self.stdout = stdout self.stderr = stderr self.pidfile = pidfile def daemonize(self): """ do the UNIX double-fork magic, see Stevens' "Advanced Programming in the UNIX Environment" for details (ISBN 0201563177) http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC16 """ try: pid = os.fork() if pid > 0: # exit first parent sys.exit(0) except Exception as e: sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror)) sys.exit(1) # decouple from parent environment os.chdir("/") os.setsid() os.umask(0) # do second fork try: pid = os.fork() if pid > 0: # exit from second parent sys.exit(0) except Exception as e: sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror)) sys.exit(1) # redirect standard file descriptors sys.stdout.flush() sys.stderr.flush() si = open(self.stdin, 'r') so = open(self.stdout, 'a+') se = open(self.stderr, 'a+') os.dup2(si.fileno(), sys.stdin.fileno()) os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(se.fileno(), sys.stderr.fileno()) # write pidfile atexit.register(self.delpid) pid = str(os.getpid()) file(self.pidfile,'w+').write("%s\n" % pid) def delpid(self): os.remove(self.pidfile) def start(self): """ Start the daemon """ # Check for a pidfile to see if the daemon already runs try: pf = open(self.pidfile,'r') pid = int(pf.read().strip()) pf.close() except IOError: pid = None if pid: message = "pidfile %s already exist. Daemon already running?\n" sys.stderr.write(message % self.pidfile) sys.exit(1) # Start the daemon self.daemonize() self.run() def stop(self): """ Stop the daemon """ # Get the pid from the pidfile try: pf = file(self.pidfile,'r') pid = int(pf.read().strip()) pf.close() except IOError: pid = None if not pid: message = "pidfile %s does not exist. Daemon not running?\n" sys.stderr.write(message % self.pidfile) return # not an error in a restart # Try killing the daemon process try: while 1: os.kill(pid, SIGTERM) time.sleep(0.1) except Exception as err: #FIX for Ru_ru locale # Anton Fischer <a.fschr@gmail.com> #err = str(err) #if err.find("No such process") > 0: if os.path.exists(self.pidfile): os.remove(self.pidfile) #else: # print str(err) # sys.exit(1) def restart(self): """ Restart the daemon """ self.stop() self.start() def run(self): """ You should override this method when you subclass Daemon. It will be called after the process has been daemonized by start() or restart(). """ scanner=opdsScanner() scanner.log_options() scanner.scan_all() scanner.log_stats() print('Start daemon...') d=Daemon('/var/run/sopds.pid') d.start() Loading
logs/sopds.log +78 −0 Original line number Diff line number Diff line Loading @@ -147,3 +147,81 @@ mysql.connector.errors.DatabaseError: 1205 (HY000): Lock wait timeout exceeded; 2014-04-20 23:21:39,495 INFO sopdsDaemon starting... 2014-04-20 23:21:39,545 INFO sopdsDaemon entering in main loop... 2014-04-20 23:21:39,545 INFO ***** Starting sopds-scan... 2014-04-20 23:28:48,768 INFO sopdsDaemon __init__()... 2014-04-20 23:28:48,769 INFO sopdsDaemon stop()... 2014-04-20 23:29:08,057 INFO sopdsDaemon __init__()... 2014-04-20 23:29:08,058 INFO sopdsDaemon start()... 2014-04-20 23:29:08,122 INFO sopdsDaemon entering in main loop... 2014-04-20 23:29:08,123 INFO ***** Starting sopds-scan... 2014-04-20 23:42:40,180 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-000024-030559.zip book file = 25453.fb2 2014-04-20 23:42:41,956 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-000024-030559.zip book file = 25608.fb2 2014-04-21 00:47:58,326 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-074392-091839.zip book file = 91582.fb2 2014-04-21 01:12:10,713 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-365000-370999.zip book file = 366784.fb2 2014-04-21 01:49:00,572 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-182285-187147.zip book file = 185993.fb2 2014-04-21 02:03:50,470 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120844.fb2 2014-04-21 02:03:51,091 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120845.fb2 2014-04-21 02:03:51,995 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120867.fb2 2014-04-21 02:03:52,292 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120869.fb2 2014-04-21 02:03:53,231 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120882.fb2 2014-04-21 02:03:57,218 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 121005.fb2 2014-04-21 02:04:37,037 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 122485.fb2 2014-04-21 02:05:14,522 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 124269.fb2 2014-04-21 02:05:46,782 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126076.fb2 2014-04-21 02:05:52,301 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126390.fb2 2014-04-21 02:05:56,028 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126570.fb2 2014-04-21 02:05:57,324 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126620.fb2 2014-04-21 02:06:05,150 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129300.fb2 2014-04-21 02:06:05,204 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129304.fb2 2014-04-21 02:06:05,266 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129305.fb2 2014-04-21 02:06:09,021 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129556.fb2 2014-04-21 02:06:13,436 ERROR Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129813.fb2 2014-04-21 02:22:12,199 INFO Books added : 288522 2014-04-21 02:22:12,199 INFO Books skipped : 0 2014-04-21 02:22:12,200 INFO Books DB entries deleted : 0 2014-04-21 02:22:12,200 INFO Books in archives: 282953 2014-04-21 02:22:12,200 INFO Archives scanned : 162 2014-04-21 02:22:12,200 INFO Archives skipped : 0 2014-04-21 02:22:12,201 INFO Bad archives : 0 2014-04-21 02:22:12,201 INFO Time estimated:2 hours, 53 minutes, 4 seconds. 2014-04-21 04:00:17,635 INFO ***** Starting sopds-scan... 2014-04-21 04:03:58,687 INFO Books added : 288522 2014-04-21 04:03:58,722 INFO Books skipped : 5569 2014-04-21 04:03:58,723 INFO Books DB entries deleted : 0 2014-04-21 04:03:58,723 INFO Books in archives: 282953 2014-04-21 04:03:58,723 INFO Archives scanned : 197 2014-04-21 04:03:58,723 INFO Archives skipped : 127 2014-04-21 04:03:58,724 INFO Bad archives : 0 2014-04-21 04:03:58,724 INFO Time estimated:4 hours, 34 minutes, 50 seconds. 2014-04-21 08:00:11,529 INFO ***** Starting sopds-scan... 2014-04-21 08:03:16,654 INFO Books added : 288522 2014-04-21 08:03:16,655 INFO Books skipped : 11138 2014-04-21 08:03:16,655 INFO Books DB entries deleted : 0 2014-04-21 08:03:16,655 INFO Books in archives: 282953 2014-04-21 08:03:16,655 INFO Archives scanned : 232 2014-04-21 08:03:16,655 INFO Archives skipped : 254 2014-04-21 08:03:16,656 INFO Bad archives : 0 2014-04-21 08:03:16,656 INFO Time estimated:8 hours, 34 minutes, 8 seconds. 2014-04-21 08:19:14,396 INFO sopdsDaemon __init__()... 2014-04-21 08:19:14,397 INFO sopdsDaemon restart()... 2014-04-21 08:19:14,397 INFO sopdsDaemon stop()... 2014-04-21 08:19:16,400 INFO sopdsDaemon start()... 2014-04-21 08:19:16,452 INFO sopdsDaemon entering in main loop... Traceback (most recent call last): File "./sopdsd.py", line 224, in <module> daemon.restart() File "./sopdsd.py", line 195, in restart Daemon.restart(self) File "./sopdsd.py", line 151, in restart self.start() File "./sopdsd.py", line 179, in start Daemon.start(self) File "./sopdsd.py", line 91, in start self.run() File "./sopdsd.py", line 205, in run self.scanner.init_statas() AttributeError: 'opdsScanner' object has no attribute 'init_statas' 2014-04-21 08:19:16,456 INFO sopdsDaemon delpid()... 2014-04-21 08:20:50,251 INFO sopdsDaemon __init__()... 2014-04-21 08:20:50,252 INFO sopdsDaemon start()... 2014-04-21 08:20:50,300 INFO sopdsDaemon entering in main loop... 2014-04-21 08:20:50,301 INFO ***** Starting sopds-scan...
py/sopdsd.py +1 −0 Original line number Diff line number Diff line Loading @@ -202,6 +202,7 @@ class opdsDaemon(Daemon): while True: t=time.localtime() if (((self.cfg.DAY_OF_WEEK==0) or (self.cfg.DAY_OF_WEEK==t.tm_wday+1)) and (t.tm_hour*60+t.tm_min in self.cfg.SCAN_TIMES)) or (self.cfg.SCAN_ON_START and not self.start_scan): self.scanner.init_stats() self.scanner.log_options() self.scanner.scan_all() self.scanner.log_stats() Loading
py/sopdsd1.pydeleted 100755 → 0 +0 −143 Original line number Diff line number Diff line #!/usr/bin/env python3 #http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/ import sys, os, time, atexit from signal import SIGTERM from sopdsscanner import opdsScanner class Daemon: """ A generic daemon class. Usage: subclass the Daemon class and override the run() method """ def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): self.stdin = stdin self.stdout = stdout self.stderr = stderr self.pidfile = pidfile def daemonize(self): """ do the UNIX double-fork magic, see Stevens' "Advanced Programming in the UNIX Environment" for details (ISBN 0201563177) http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC16 """ try: pid = os.fork() if pid > 0: # exit first parent sys.exit(0) except Exception as e: sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror)) sys.exit(1) # decouple from parent environment os.chdir("/") os.setsid() os.umask(0) # do second fork try: pid = os.fork() if pid > 0: # exit from second parent sys.exit(0) except Exception as e: sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror)) sys.exit(1) # redirect standard file descriptors sys.stdout.flush() sys.stderr.flush() si = open(self.stdin, 'r') so = open(self.stdout, 'a+') se = open(self.stderr, 'a+') os.dup2(si.fileno(), sys.stdin.fileno()) os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(se.fileno(), sys.stderr.fileno()) # write pidfile atexit.register(self.delpid) pid = str(os.getpid()) file(self.pidfile,'w+').write("%s\n" % pid) def delpid(self): os.remove(self.pidfile) def start(self): """ Start the daemon """ # Check for a pidfile to see if the daemon already runs try: pf = open(self.pidfile,'r') pid = int(pf.read().strip()) pf.close() except IOError: pid = None if pid: message = "pidfile %s already exist. Daemon already running?\n" sys.stderr.write(message % self.pidfile) sys.exit(1) # Start the daemon self.daemonize() self.run() def stop(self): """ Stop the daemon """ # Get the pid from the pidfile try: pf = file(self.pidfile,'r') pid = int(pf.read().strip()) pf.close() except IOError: pid = None if not pid: message = "pidfile %s does not exist. Daemon not running?\n" sys.stderr.write(message % self.pidfile) return # not an error in a restart # Try killing the daemon process try: while 1: os.kill(pid, SIGTERM) time.sleep(0.1) except Exception as err: #FIX for Ru_ru locale # Anton Fischer <a.fschr@gmail.com> #err = str(err) #if err.find("No such process") > 0: if os.path.exists(self.pidfile): os.remove(self.pidfile) #else: # print str(err) # sys.exit(1) def restart(self): """ Restart the daemon """ self.stop() self.start() def run(self): """ You should override this method when you subclass Daemon. It will be called after the process has been daemonized by start() or restart(). """ scanner=opdsScanner() scanner.log_options() scanner.scan_all() scanner.log_stats() print('Start daemon...') d=Daemon('/var/run/sopds.pid') d.start()