Python-スクリプトのDaemon化

PythonでDaemonとして動かすスクリプトを作成する場合の方法について。

前準備-python-daemonパッケージをインストール

スクリプトをDaemon化するにあたって、まず必要なパッケージ「python-daemon」を導入しておきます。

Fedoraの場合

Fedoraの場合は、次のコマンドを実行します。
コマンドはrootユーザーで実行します。

# yum -y install python-daemon

CentOS、Scientific Linuxの場合

CentOS、Scientific Linuxの場合は、Fedoraとは違い、EPELリポジトリの有効化を行う必要があります。
まず、EPELリポジトリを追加する為に、リポジトリ登録用のRPMファイルをダウンロードします。

  • 32bit版の場合
    # wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
  • 64bit版の場合
    # wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
    • ファイル名「epel-release-6-8.noarch.rpm」の8の部分は、EPEL側のバージョンアップによって増加する事があるので、注意する。


ダウンロードしたRPMファイルをインストールします。

# rpm -ivh rprl-release-6-8.noarch.rpm

パッケージのインストールを行います。

# yum -y install python-daemon

Ubuntuの場合

Ubuntuの場合は、次のコマンドを実行します。

# apt-get -y install python-daemon

スクリプトの書き方

パッケージのインストールができたら、所定の書式にしたがってスクリプトを作成します。

#!/usr/bin/python

from __future__ import with_statement
from daemon import DaemonContext
# Fedoraの場合
from daemon.pidfile import PIDLockFile
# Fedora以外の場合
from daemon.pidlockfile import PIDLockFile


dc = DaemonContext(
    pidfile=PIDLockFile('ロックファイルのフルパス'),
    stderr=open('エラー出力ファイルのパス', 'w+')
)

with dc:
    # この部分に書いた処理がDaemon化される

補足事項

DaemonContextのstderrに書いたエラー出力ファイルには、処理中のエラーで出力されるStackTraceなどが出力されるので、うまく動かなかったり、エラーで落ちてしまった場合などにはここを確認すると良い。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-01-25 (金) 09:02:22 (1725d)