由于这篇文章多年来引起了很多关注,我在本文的最后列出了每个平台的顶级解决方案.
原帖:
我希望我的node.js服务器在后台运行,即:当我关闭终端时,我希望我的服务器继续运行.我已经用Google搜索了这个教程,但它没有按预期工作.因此,我没有使用该守护进程脚本,而是认为我只使用了输出重定向(2>&1 >> file
部分),但这也没有退出 - 我的终端中出现一个空行,就像是在等待输出/错误.
我也尝试将该过程放在后台,但是一旦我关闭终端,该过程也会被杀死.
那么当我关闭本地计算机时,如何让它保持运行?
最佳方案:
在Rails环境中运行计划任务的最佳方法是什么?脚本/亚军?耙?
我正在尝试将shell脚本移植到更易读的python版本.原始shell脚本在后台使用"&"启动多个进程(实用程序,监视器等).如何在python中实现相同的效果?我希望这些进程不会在python脚本完成时死掉.我确信它与守护进程的概念有某种关系,但我无法轻易找到如何做到这一点.
在Google上搜索会显示x2代码段.第一个结果是这个代码配方有很多文档和解释,以及下面的一些有用的讨论.
但是,另一个代码示例虽然不包含如此多的文档,但包含用于传递命令(如启动,停止和重新启动)的示例代码.它还会创建一个PID文件,可以方便地检查守护程序是否已在运行等.
这些示例都解释了如何创建守护进程.还有其他事情需要考虑吗?一个样本比另一个好,为什么?
我想转移到Docker,所以我刚刚开始搞乱它.我在VirtualBox Ubuntu 15.10(Wily Werewolf)安装上安装了Docker,按照这里的建议我尝试运行一个基本的nginx Docker镜像:
$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Run Code Online (Sandbox Code Playgroud)
所以我检查了Docker是否正在运行:
$ sudo service docker status
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
Docs: https://docs.docker.com
Main PID: 7542 (docker)
CGroup: /system.slice/docker.service
??7542 /usr/bin/docker daemon -H fd://
nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker …
Run Code Online (Sandbox Code Playgroud) 在Python文档中 它说:
线程可以标记为"守护程序线程".这个标志的意义在于,当只剩下守护进程线程时,整个Python程序都会退出.初始值继承自创建线程.
有没有人更明确地解释这意味着什么或一个实际的例子显示你想要将线程设置为何处daemonic
?
为我澄清一下:
因此,如果您希望它们在主线程退出后继续运行,那么您唯一不会将线程设置为守护程序的时间是?
部署Node.js的最佳方法是什么?
我有一个Dreamhost VPS(他们称之为VM),我已经能够安装Node.js并设置代理.只要我保持打开节点的SSH连接,这就很好用.
让我们假设我们有一个用python编写的这样一个简单的守护进程:
def mainloop():
while True:
# 1. do
# 2. some
# 3. important
# 4. job
# 5. sleep
mainloop()
Run Code Online (Sandbox Code Playgroud)
然后我们使用start-stop-daemon
默认的send SIGTERM
(TERM
)信号进行守护--stop
.
我们假设当前执行的步骤是#2
.在这个时刻,我们正在发送TERM
信号.
会发生什么是执行立即终止.
我发现我可以处理信号事件,signal.signal(signal.SIGTERM, handler)
但问题是它仍然会中断当前执行并将控制传递给handler
.
所以,我的问题是-它可以不中断当前执行,但处理TERM
(?)在独立的线程信号,使我能够设置shutdown_flag = True
,使mainloop()
有机会停止正常?
我正在尝试在python中创建一个守护进程.我发现了以下问题,其中有一些我目前正在关注的好资源,但我很好奇为什么需要双叉.我抓住谷歌,发现有足够的资源声明一个是必要的,但不是为什么.
有人提到它是为了防止守护进程获得控制终端.没有第二个叉子怎么做呢?有什么影响?
我需要运行一个PHP脚本作为守护进程(等待指令并做一些事情).cron job不会为我做,因为一旦指令到达就需要采取行动.我知道由于内存管理问题,PHP实际上不是守护进程的最佳选择,但由于各种原因,我必须在这种情况下使用PHP.我遇到了libslack的一个名为Daemon(http://libslack.org/daemon)的工具,它似乎可以帮助我管理守护进程,但是在过去的5年中没有任何更新,所以我想知道你是否知道一些其他替代方案适合我的情况.任何信息都将非常感激.