首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pyinotify作为守护进程启动脚本

使用pyinotify作为守护进程启动脚本
EN

Stack Overflow用户
提问于 2014-06-03 22:28:16
回答 1查看 1K关注 0票数 0

关于使用pyinotify作为守护进程启动脚本,我有许多问题。

我有这样的代码:

代码语言:javascript
复制
#!/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,我将如何将整个脚本作为守护进程运行?

如果我将脚本作为守护进程运行,那么是否也需要将pyinotify作为守护进程呢?

我的最后一个问题是,如果pyinotify是去功能化的,那么我肯定需要回调吗?在我的例子中,我只希望脚本永远运行,只有在系统重新启动/重新启动时才会被杀死。

脚本也应该像任何标准的启动脚本一样运行,而不需要手动干预。

FYI

我正在运行一个Ubuntu12.04服务器。

提前谢谢,导航

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-04 14:03:54

我使用Upstart -也在Ubuntu12.04上使用Upstart,以系统服务的形式运行依赖于ipynotify的进程(这是您想要的,根据事物的声音)。

就我个人而言,我根本没有修改python脚本。我只是确保它在终端上运行正常,然后创建了一个upstart配置文件,如下所示:

/etc/init/myservice.conf

代码语言:javascript
复制
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是否有任何错误。

哈哈!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24026030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档