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。

但是,无法创建 ouput.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("/")

pid 文件可以写入,因为每个人都可以写入 /tmp - / 不是每个人都可以写入的。

于 2012-03-29T14:53:05.937 回答