質問

Pyinotifyをデーモンとして使用してスクリプトの起動に関していくつかの質問があります。

私はこのようないくつかのコードを持っています:

#!/usr/bin/env python

import sys
import pyinotify
import shutil
import glob

PACKAGES_DIR = '/var/my-packages'
PACKAGES_TEMP_DIR = '/var/www-data/package_temp'

wm = pyinotify.WatchManager()
mask = pyinotify.IN_MOVED_TO

class ProcessPackages(pyinotify.ProcessEvent):
    def process_IN_MOVED_TO(self, event):
        for directory in glob.glob(PACKAGES_TEMP_DIR + '/*'):
            shutil.move(directory, PACKAGES_DIR)

handler = ProcessPackages()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(PACKAGES_TEMP_DIR, mask)

try:
    notifier.loop(daemonize=True, pid_file='/tmp/packages.pid',  stdout='/tmp/stdout.txt')
except pyinotify.NotifierError, err:
    print >> sys.stderr, err
.

私の質問は、私がDaemonizeパラメータにtrueに設定されている場合、これはスクリプト全体がデーモンとして実行されるか、それだけでPyinotify?

Pyinotifyの場合は、このスクリプト全体をデーモンプロセスとして実行することについてどう思いますか?

スクリプトをデーモンとして実行した場合は、デーモンをPyinotififyにも適用する必要がありますか?

私の最後の質問は、pyinotifyがデーモニー化されているかどうか私は間違いなくコールバックが必要ですか?私の場合、スクリプトが永久に実行され、システムの再起動/再起動時にのみ殺されるようにしたいだけです。

手動の介入なしでは、標準の起動スクリプトと同じように実行する必要があります。

FYI、

Ubuntu 12.04サーバーを実行しています。

事前にありがとう、 NAV

役に立ちましたか?

解決

Ubuntu 12.04では、アップスタートを使用して、システムサービス(あなたが望むものであるもの)としてiPyNotify依存プロセスを実行します。

個人的には、Pythonスクリプトをまったく変更しませんでした。私はそれが端末で罰金を鳴らしてから、次のようなアップスタート設定ファイルを作成しました。

/etc/init/myservice.conf

description "MyService"
author "My Name"

start on runlevel [2345]
stop on runlevel [!2345]

# Automatically restart process if crashed
#respawn

exec su myuser -c "/usr/bin/python /path/to/myscript.py > /tmp/myscript.log 2>&1"
.

initファイルが配置されているときは、sudo start myserviceのようなものを試してから、 /tmp/myscript.log をエラーのために検査します。

hth!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top