将任何命令行转换为带有pidfile和start、stop、restart和status命令的守护进程。
daemoncmd的Python项目详细描述
##简介
我对作为守护进程运行命令的第一次介绍如下:
nohup my command--myoption myarg>;/dev/null 2>;/dev/null&;
虽然这对做一些开发工作很有好处,但一个合适的守护进程需要
会发生的。wikipedia页面
http://en.wikipedia.org/wiki/daemon\(computing)指出需要
发生以下情况:
-与控制tty分离
-成为会话负责人
-成为过程组负责人
-通过分叉和退出(一次或多次)作为后台任务执行两次。有时,为了使流程成为会话领导者,需要这样做。它还允许父进程继续其正常执行。
-将根目录("/")设置为当前工作目录,以便
进程不会保留任何正在使用的目录,这些目录可能位于装入的文件
系统上(允许卸载它)。
-更改umask到0以允许open()、creat()等。操作系统
调用以提供自己的权限掩码,而不依赖于调用方
的umask-在执行时关闭父进程打开的所有继承文件,包括文件描述符0、1和2(stdin、stdout、
stderr)。稍后将打开所需的文件。
-使用日志文件、控制台或/dev/null作为stdin、stdout和stderr
另外,在monit或initd下运行进程时,通常会将守护进程的进程id存储在文件中,这样守护进程就可以被
监视和ki很容易填充。
最后,通常使用"start"、"stop"、"restart"和"status"命令来控制后台程序。
daemoncmd负责以正确的方式创建后台程序,将其pid放入
文件中,并通过"start"、"stop"等命令与后台程序交互。
简单到:
/path/to/daemoncmd start--pidfile/tmp/mydaemon.pid/path/to/mycommand
有关python中的守护进程和守护进程的详细信息,请参阅使用部分。
thon.org/dev/peps/pep-3143/
-http://aspn.activestate.com/aspn/cookbook/python/recipe/66012
-http://en.wikipedia.org/wiki/daemon\(computing)
/2.0.4,请参见http://ridingpython.blogspot.cz/2011/08/将python脚本转换为linux.html
以获取说明。
-https://github.com/indexzero/forever
以一种比简单地启动自己的守护进程更健壮和功能更全的方式访问。下面是其中一些
的列表(请参见http://news.ycombinator.com/item?id=1368855供讨论):
-launchd http://launchd.macosforge.org/
-upstart http://upstart.ubuntu.com/
-monit http://monnit.com/monit/
-supervisord http://supervisord.org/
-daemontools http://cr.yp.to/daemontools.html
-daemonize http://bmc.github.com/daemonize/
-运行http://smarden.sunsite.dk/runit/
-perp http://bnelix.net/perp/
对于生产系统,我建议使用类似这样的工具。我以前用过监督和监视。其中一些工具与守护进程一起工作,比如
monit,在这种情况下,daemoncmd可能会派上用场。其他工具,如supervisord,可以以一种不需要对其进行daemonize的方式来监督您的过程。
\contribution
>如果此项目没有按您的要求执行,请在github上打开一个问题或请求,https://github.com/toddeluca/daemoncmd.
需求
-可能是python 2.7(因为这是唯一的v它的版本已经过了测试。)
<<
<<
<35<35<35 <35 <35<
下载并安装python vagrant:
git clone git@git@git@git hub.com网站:toddeluca/daemoncmd.git
cd daemoncmd
python setup.py install
\usage
>此模块有两种不同的使用情况:
-将命令作为守护进程运行
-将当前python进程作为守护进程分叉。
e启动、停止和重新启动非守护进程
命令作为守护进程。这需要指定一个pid文件,该文件用于与进程交互。
用法示例:
--stdout/tmp/daemon.log--stderr/tmp/daemon.log sleep 100
daemoncmd restart--pidfile/tmp/daemon.pid\
--stdout/tmp/daemon.log--stderr/tmp/daemon.log sleep 100
daemoncmd status--pidfile/tmp/daemon.pid
daemoncmd stop--pidfile/tmp/daemon.pid
另一个用例将当前进程分叉为一个守护进程。根据pep 3143,作为守护进程的forking可以在某一天由标准库完成。
用法示例:
import daemoncmd
import mytask
daemoncmd.daemonize()
mytask.doit()
aemoncmd,mytask;daemoncmd.daemonize();mytask.doit()'
其他用法说明:
-该命令不应对自身进行daemonize,因为这是该脚本所做的
,它将使pidfile中的pid不正确。
-该命令应引用可执行文件的绝对路径,因为
后台监控将当前工作目录(CWD)设置为"/"。一般来说,不要假设cwd是什么。
-如果daemoncmd由monit等运行,出于安全原因,path和其他env vars可能会受到限制。
-daemoncmd不会尝试将守护进程作为特定uid运行。这将由进程管理器处理,如monit、launchd、init、god等。
-在monit下运行时,将环境变量传递给命令
,如下所示:
foo=testing daemoncmd start--pidfile/tmp/daemon.pid\
--stdout/tmp/daemon.log prin蒸馏器
我对作为守护进程运行命令的第一次介绍如下:
nohup my command--myoption myarg>;/dev/null 2>;/dev/null&;
虽然这对做一些开发工作很有好处,但一个合适的守护进程需要
会发生的。wikipedia页面
http://en.wikipedia.org/wiki/daemon\(computing)指出需要
发生以下情况:
-与控制tty分离
-成为会话负责人
-成为过程组负责人
-通过分叉和退出(一次或多次)作为后台任务执行两次。有时,为了使流程成为会话领导者,需要这样做。它还允许父进程继续其正常执行。
-将根目录("/")设置为当前工作目录,以便
进程不会保留任何正在使用的目录,这些目录可能位于装入的文件
系统上(允许卸载它)。
-更改umask到0以允许open()、creat()等。操作系统
调用以提供自己的权限掩码,而不依赖于调用方
的umask-在执行时关闭父进程打开的所有继承文件,包括文件描述符0、1和2(stdin、stdout、
stderr)。稍后将打开所需的文件。
-使用日志文件、控制台或/dev/null作为stdin、stdout和stderr
另外,在monit或initd下运行进程时,通常会将守护进程的进程id存储在文件中,这样守护进程就可以被
监视和ki很容易填充。
最后,通常使用"start"、"stop"、"restart"和"status"命令来控制后台程序。
daemoncmd负责以正确的方式创建后台程序,将其pid放入
文件中,并通过"start"、"stop"等命令与后台程序交互。
简单到:
/path/to/daemoncmd start--pidfile/tmp/mydaemon.pid/path/to/mycommand
有关python中的守护进程和守护进程的详细信息,请参阅使用部分。
thon.org/dev/peps/pep-3143/
-http://aspn.activestate.com/aspn/cookbook/python/recipe/66012
-http://en.wikipedia.org/wiki/daemon\(computing)
/2.0.4,请参见http://ridingpython.blogspot.cz/2011/08/将python脚本转换为linux.html
以获取说明。
-https://github.com/indexzero/forever
以一种比简单地启动自己的守护进程更健壮和功能更全的方式访问。下面是其中一些
的列表(请参见http://news.ycombinator.com/item?id=1368855供讨论):
-launchd http://launchd.macosforge.org/
-upstart http://upstart.ubuntu.com/
-monit http://monnit.com/monit/
-supervisord http://supervisord.org/
-daemontools http://cr.yp.to/daemontools.html
-daemonize http://bmc.github.com/daemonize/
-运行http://smarden.sunsite.dk/runit/
-perp http://bnelix.net/perp/
对于生产系统,我建议使用类似这样的工具。我以前用过监督和监视。其中一些工具与守护进程一起工作,比如
monit,在这种情况下,daemoncmd可能会派上用场。其他工具,如supervisord,可以以一种不需要对其进行daemonize的方式来监督您的过程。
\contribution
>如果此项目没有按您的要求执行,请在github上打开一个问题或请求,https://github.com/toddeluca/daemoncmd.
需求
-可能是python 2.7(因为这是唯一的v它的版本已经过了测试。)
<<
<<
<35<35<35 <35 <35<
下载并安装python vagrant:
git clone git@git@git@git hub.com网站:toddeluca/daemoncmd.git
cd daemoncmd
python setup.py install
\usage
>此模块有两种不同的使用情况:
-将命令作为守护进程运行
-将当前python进程作为守护进程分叉。
e启动、停止和重新启动非守护进程
命令作为守护进程。这需要指定一个pid文件,该文件用于与进程交互。
用法示例:
daemoncmd restart--pidfile/tmp/daemon.pid\
--stdout/tmp/daemon.log--stderr/tmp/daemon.log sleep 100
daemoncmd status--pidfile/tmp/daemon.pid
daemoncmd stop--pidfile/tmp/daemon.pid
另一个用例将当前进程分叉为一个守护进程。根据pep 3143,作为守护进程的forking可以在某一天由标准库完成。
用法示例:
import daemoncmd
import mytask
daemoncmd.daemonize()
mytask.doit()
aemoncmd,mytask;daemoncmd.daemonize();mytask.doit()'
其他用法说明:
-该命令不应对自身进行daemonize,因为这是该脚本所做的
,它将使pidfile中的pid不正确。
-该命令应引用可执行文件的绝对路径,因为
后台监控将当前工作目录(CWD)设置为"/"。一般来说,不要假设cwd是什么。
-如果daemoncmd由monit等运行,出于安全原因,path和其他env vars可能会受到限制。
-daemoncmd不会尝试将守护进程作为特定uid运行。这将由进程管理器处理,如monit、launchd、init、god等。
-在monit下运行时,将环境变量传递给命令
,如下所示:
foo=testing daemoncmd start--pidfile/tmp/daemon.pid\
--stdout/tmp/daemon.log prin蒸馏器