0

私が使用する晩餐クラスはhttp://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/です。私のコードは以下のとおりです。

import os
import sys, time
from daemon import Daemon
class MyDaemon(Daemon):
    def run(self):
        while True:
            cmd='cat test.txt > output.txt'
            os.system(cmd)
            time.sleep(6000)
if __name__ == "__main__":     
    daemon = MyDaemon('/tmp/DebugDaemon.pid')
    daemon.start()

DebugDaemon.py を実行すると、/tmp/DebugDaemon.pid が作成されます。

しかし、output.txt ファイルが作成できません。

直接呼び出すと(つまり、デーモンコードを使用しない)、正常に動作します。

4

3 に答える 3

1

cmdローカル変数です。コードがそれを使用しないため、それへの割り当ては実際には何もしません。

このsubprocessモジュールを使用すると、Python 内から他のプログラムを呼び出すことができます。ただし、デーモンとどのように相互作用するかはわかりません。

于 2012-03-29T14:48:41.603 に答える
1

Daemonに表示さchdir()/ます。あなたのプロセスには への書き込み権限がないと思います/

デーモンは、存在chdir()するディレクトリtest.txt(およびプロセスが書き込み権限を持っているディレクトリ) に移動する必要があります。または、どこでもフル パスを使用します。

cmd = 'cat /tmp/test.txt > /tmp/output.txt'
于 2012-03-29T14:53:05.233 に答える
0

cat test.txt > output.txt

スーパークラスが実行するため、 / で実行されます

# decouple from parent environment
os.chdir("/")

誰でも /tmp に書き込むことができるため、pid ファイルに書き込むことができます - / は誰でも書き込むことができません。

于 2012-03-29T14:53:05.937 に答える