问题标签 [daemons]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
166635 浏览

linux - 将 bash 脚本作为守护进程运行

我有一个脚本,它每 X 次运行我的 PHP 脚本:

我怎样才能将它作为守护进程启动?

0 投票
1 回答
45719 浏览

linux - 如何在 Linux Ubuntu 中创建 .sh 扩展文件?

我正在尝试编写一个脚本来将我的一个.jar文件作为守护进程运行,但我不明白如何.sh在 Ubuntu 中创建扩展文件。我已经用vi我想要的代码创建了一个文件,但我不知道如何将文件定义为专门的 .sh 文件。例如,我想将我的文件“ foo”或“ foo.txt”转换为“ foo.sh”。

是否有一个我看不到的简单命令可以将文件转换为 .sh 扩展名,或者它是一个更复杂的过程?

0 投票
2 回答
976 浏览

python - 将参数从 sh 脚本(从 etc/init.d/skeleton 重制)传递给 python

我有一个脚本,我需要他将参数传递给 python 程序。我接受论点:

其中 $DAEMON 是我的 .py 文件的路径。我需要像这样传递一些数字参数

我必须将这个数字传递给 sleep.py。sleep.py 的代码:

如何使 n = 10(从控制台传递的参数)?

0 投票
1 回答
1419 浏览

python - 正确的守护进程行为(来自 PEP 3143)解释

我在 Python 中有一些 [针对我的 RPi] 的任务,其中涉及很多内容sleep:做一些需要一两三秒的事情,然后等待几分钟或几小时。我想在那个睡眠时间将控制权交还给操作系统(Linux)。为此,我应该守护这些任务。一种方法是使用 Python 的标准守护进程库。

但是守护进程并不那么容易理解。根据PEP 3143的基本原理段落,表现良好的守护进程应该执行以下操作。

  • 关闭所有打开的文件描述符。
  • 更改当前工作目录。
  • 重置文件访问创建掩码。
  • 在后台运行。
  • 与进程组解除关联。
  • 忽略终端 I/O 信号。
  • 与控制终端解除关联。
  • 不要重新获取控制终端。
  • 正确处理下列情况:
    • 由 System V init 进程启动。
    • 通过 SIGTERM 信号终止守护进程。
    • 儿童产生 SIGCLD 信号。

对于像我这样的 Linux/Unix 新手来说,其中的一些很难解释。但我想知道我为什么要做我所做的事情。那么这个理由背后的理由是什么?

0 投票
1 回答
19 浏览

hadoop - 无法运行 Hadoop 守护进程

当我运行 jps 命令时:

作为回报,我只将 jps 视为正在运行的 java 程序。

当我运行 start-all.sh 命令时,我收到如下错误:拒绝连接到端口 22

0 投票
2 回答
1121 浏览

unix - Golang 上的 Ticker 和守护进程

是否可以使用 Ticker 实现长时间运行的守护进程的优雅终止?我在这里阅读了另一个相关线程,您应该始终关闭通道以避免内存泄漏,但是如果我在守护程序模式下运行它(假设我使用daemonize来处理 golang 之外的守护程序操作),真的没有办法让它在进程终止之前进行任何集体清理。除非我遗漏了什么,否则我在这里询问是否有替代/更好的方法在 Golang 中执行此操作

0 投票
0 回答
5112 浏览

linux - 无法在 Ubuntu 上运行 systemd 服务守护进程(如何切换到 Upstart 或者是否有更新的发行版)

注意:我没有任何实际管理服务器或在任何深度级别使用 Linux 的经验,因此我的知识和理解非常有限。从本质上讲,我正在即兴发挥。

有关完整的代码示例,请参见:https ://github.com/Integralist/Vagrant-Examples/tree/master/nodejs


这是一个两部分的问题:

  1. 无法挂载我的共享目录
  2. systemd服务不可用

我正在尝试创建一个启动 NodeJS 应用程序的服务,但它看起来systemctl在我安装的 Ubuntu 版本上不可用(https://vagrantcloud.com/ubuntu/trusty64)。

这是我的Vagrantfile

以下是setup.sh创建.service文件的配置脚本的内容:

但是当我运行时,vagrant up我得到以下错误输出:

所以我的第一个问题是我似乎无法挂载我的共享文件夹。

此外,最初在我的配置脚本中(在创建our-node-app.service文件之后)我将拥有以下内容:

如果我将其添加回我的配置脚本然后运行,vagrant provision --provision-with shell我将得到以下输出:

这是我发现systemctl命令不可用的问题的地方。

我还尝试修改配置脚本,而不是...

...我会用...

这是因为我在某个地方读到了 Ubuntu 不支持的内容systemd,而是使用了一些名为upstart来启动其所有服务的东西。我当时假设我可以只使用另一个命令并保持脚本本身相同(似乎不是这种情况)。

但所做的所有更改都表明我的服务没有得到认可:

然后我发现Ubuntu 终究会转向这种systemd格式:但这是在 2014 年 2 月宣布的,所以我本以为最新的 Ubuntu 现在已经切换了(或者只是我是个白痴而不欣赏这样的改变需要多长时间)。

认为我必须使用这种 Upstart 格式,我已经开始阅读这个,但遗憾的是我无法弄清楚如何将我的systemd脚本转换为 Upstart 的格式。


这给我留下了一个问题:这里有没有其他人遇到过这个问题,如果有,他们是如何解决的(您是否切换到支持systemd或重写您的服务以使用 Upstart 格式的不同 Ubuntu 版本)?

您对如何将systemd脚本转换为 Upstart 格式有任何建议(或好的资源)吗?

对此主题的任何帮助将不胜感激;正如我在开始时提到的,我不是系统/服务器操作人员,所以我在这里做准备。

谢谢。

更新

我发现了这一点,似乎我误解了 和 之间的systemd区别。一个基于和改进的全新系统也是如此。init.dupstartsystemdinit.dupstart

链接到的文章解释了如何安装systemdupstart然后切换到systemd,但我在尝试安装 VM 时仍然遇到错误?

我已经更新了我的回购代码。

0 投票
0 回答
218 浏览

python - Python 守护进程状态未知

我已经通过教程创建了一个 python 守护程序,它的运行就像教程示例一样。但是也有问题:

的输出service --status-all说:

[ ? ] 测试守护进程

谁能帮我找出这些错误和警告是什么或修复我的守护进程的状态,以便它是这样的:

[ + ] 测试守护进程

0 投票
0 回答
56 浏览

xcode - MacOSX lanch 守护进程

我正在我的系统中创建一个虚拟文件夹,该文件夹需要保留,直到用户手动删除它。由于它是一个虚拟文件夹,因此一旦系统关闭或重新启动,它就会自动删除。

所以,为了坚持它,我试图从系统启动期间运行的 daemon/launchAgent 运行它。为此,我只是分离了刚刚创建虚拟文件夹的代码,使用命令行工具模板将其作为单独的 Xcode 应用程序,并将其 unix 可执行文件添加到 LaunchAgents/LaunchDaemons 以使其在每次系统重新启动时运行。

在我的情况下,虚拟文件​​夹的创建实际上需要保留该过程,这是使用 getchar() 函数完成的。当我通过 Xcode 构建它时,该过程在 getchar() 处停止,并且虚拟文件夹被正确创建。现在我获取了它的可执行文件(unix 可执行文件),双击它以从 Xcode 中运行它,即使该进程在所需的点停止并正常运行。现在,当我尝试从启动守护进程/启动代理运行它时,该进程似乎并没有在任何地方停止,它一直运行到最后,最后我看不到我的结果,即创建虚拟文件夹。如何解决?

在此先感谢并期待任何建议。

0 投票
2 回答
473 浏览

c++ - c ++在fork之后初始化全局对象

我有一个使用工作队列执行任务的程序,并且应该作为守护进程运行。我一直在使用以下代码实现这一点:

这将关闭原始进程并启动另一个进程。但是,这导致了我为执行任务而创建的线程在分叉后没有再次出现的问题。我的工作队列是全局实例化的,所有其他值和内存地址都正确复制到子节点,但线程没有。

作为参考,这里是池类:

池.h:

池.cpp:

那么我该如何解决呢?