====== PythonスクリプトのDaemon化 ======
PythonでDaemonとして動かすスクリプトを作成する場合の方法について。
===== 前準備-python-daemonパッケージをインストール =====
スクリプトをDaemon化するにあたって、まず必要なパッケージ「**python-daemon**」を導入しておきます。
==== Fedoraの場合 ====
Fedoraの場合は、はじめから必要なリポジトリが設定済みなので、次のコマンドを実行するだけでOKです。\\
コマンドはrootユーザーで実行します。\\
# yum -y install python-daemon
==== CentOS、Scientific Linuxの場合 ====
CentOS、Scientific Linuxの場合は、Fedoraとは違い、EPELリポジトリの有効化を行う必要があります。\\
まず、EPELリポジトリを追加する為に、リポジトリ登録用のRPMファイルをダウンロードします。\\
(CentOS6.x、Scientific Linux6.xの場合)
* 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などが出力されるので、うまく動かなかったり、エラーで落ちてしまった場合などにはここを確認すると良い。