pythonでデーモンを作る機会があるのでバックグラウンドだけしか動かなせないとデバッグしづらいのでフォアグラウンドでも動くようにスクリプトを作ろうと思う。
引数をとってフォアグラウンド/バックグラウンドの切り替えをするためにargparseを使ってみる。
argparseはpython2.7から導入された標準モジュールで2.6以前で使われていたoptparseモジュールの代わりとなるものです。
argparseのドキュメントを見るとoptparseを完全に置き換えるものらしいので互換性は高く、そして高機能です。
#!/usr/bin/env python2.7 # -*- coding:utf-8 -*- from daemon import DaemonContext from daemon.pidfile import PIDLockFile import logging import logging.config import time import argparse logging.config.fileConfig("logging.conf") logger = logging.getLogger("app") logger.info('start daemon') parser = argparse.ArgumentParser(version='1.0') parser.add_argument('-d', action="store_true", default=False, help='daemonize') args = parser.parse_args() if args.d: dc = DaemonContext( pidfile = PIDLockFile('/tmp/lost.pid'), files_preserve = [logger.handlers[0].stream], with dc: while True: logger.info('daemon working') time.sleep(2) else: while True: logger.info('daemon working') time.sleep(2)
argparseを使ってみた - そこはかとなく書くよ。 argparse – コマンドラインオプションと引数の解析 - Python Module of the Week