问题标签 [upstart]

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 投票
1 回答
2630 浏览

node.js - node.js 主进程被 ABRT 信号杀死,但未被 process.on("SIGABRT",...) 捕获

我正在使用 upstart 启动一个守护进程来运行 node.js(使用 express 和 connect-redis)http 和 https 服务器(在同一个节点 .js 文件中)

http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/

启动时一切正常,所有应用程序功能似乎都按预期工作,但始终如一地,在不同的持续时间后(有时在几个小时后,有时在一天后),守护进程被杀死,我拥有的唯一日志在

守护进程日志:

myserver init: myupstartscript 主进程 (3410) 被 ABRT 信号杀死

在我的节点 js 文件中,我放置了:

没有一个捕捉到事件。

我不知道如何模拟事件。当我尝试使用

我的 process.on('SIGABRT',..) 抓住了那些。

我注意到的其他事情:

  • 如果我在没有 https 服务器的情况下运行服务,则永远不会发生崩溃。
  • 根据我的其他日志,崩溃不是由用户触发的事件引起的
  • 我依赖的其他应用程序特定服务(redis-server、mongod)似乎都与事件无关,它们继续照常服务。
  • 我已将 upstart 脚本设置为在崩溃时重新生成,并且确实如此。

关于我如何追踪它的任何帮助?

我的设置:Linux iLV1 2.6.35.4-rscloud #8 SMP Mon Sep 20 15:54:33 UTC 2010 x86_64 GNU/Linux node v0.5.11-pre

谢谢。

0 投票
2 回答
2812 浏览

node.js - 使用 upstart 和 Procfile 运行 node.js 应用程序

我有一个 node.js 应用程序。

我写了一个包含以下内容的 Procfile。

不确定我是否做得对,但我尝试使用 ruby​​ gem 工头运行它。

没发生什么事。进程不运行。

请评论我是否做得对,如果有任何其他方式运行这是我的本地。我最终想要做的是在最终部署到生产环境时使用 upstart 导出它。

0 投票
1 回答
2410 浏览

nginx - 工头不使用 NGINX

我正在尝试使用Foreman(版本 0.31.0)来管理我们的应用程序的进程,但我对 nginx(nginx/1.0.10 + Phusion Passenger 3.0.11)不太满意。

这是我的 Procfile 中的相关行:

当我启动应用程序时,Foreman 报告 nginx 已启动,然后立即终止:

但是,nginx 实际上正在运行,即使 Foreman 报告了其他情况。


同样,如果我导出到 Upstart:

运行sudo start my_app,nginx 正常启动。但sudo stop my_app 不会停止 nginx。它继续运行。

让 nginx 与 Foreman 一起工作有什么诀窍吗?

注意:我在Foreman 上发现了这个问题,我想知道它是否相关。

0 投票
1 回答
1764 浏览

mount - 如何确保在其父文件系统之后安装“绑定”文件系统?

我最近在我的 fstab 中添加了几个条目,以允许我将一些目录重新绑定到我的文件系统树中的其他位置,就像这样

然而,/mnt/smb/foo 恰好是一个 SMB 文件系统(在 Samba 服务器上),在 fstab 前面有一行看起来像

(显然,这些行已被匿名)

问题是,现在我在启动时收到错误“ The disc drive for /home/mishagale/sourcecode/bar is not ready yet or not present。” 如果我通过点击跳过安装S,系统启动正常,但我必须手动安装有问题的安装点。

有没有一种方法可以指示 Ubuntu在成功挂载bar之前不要尝试挂载?foo我相信新贵应该可以做到这一点,但我不确定如何去做。

我可以(并且现在)只需打开该noauto选项bar并设置一个脚本,以便稍后运行它们,但这对我来说似乎是一个难题,我有兴趣学习使用 Upstart 的“正确”方法.

0 投票
1 回答
741 浏览

ubuntu - 新贵没有重生守护进程

我有一个用 C 语言编写的守护程序,它使用 daemon() 调用。

如果它意外失败,我希望新贵重生。

我在 Ubuntu 8.04 上使用了一个相当老的新贵版本,0.3.9。

我创建了以下文件(/etc/event.d/my-daemon):

地位:

开始:

它显示了我何时ps aux | grep my-daemon按预期进行操作。然后我用kill -9期望它重生来杀死它,但ps aux之后再次发出什么也没显示。我status my-daemon得到:

有任何想法吗?

0 投票
2 回答
806 浏览

ubuntu - 忽略 umask 的新贵`unicorn`

upstart v1.4用来启动我的应用程序服务器,它被称为unicorn.

upstart配置文件如下所示:

进程必须使用 运行0774,也就是说ug+rwxo+r,至少对于目录来说是这样。用户和组是共享的,例如 nginx 服务器、上传、员工登录等。

我观察到目录是使用错误的权限创建的:

据我所知,我的应用程序中没有任何原因导致这种情况。

根据附加gdb到进程,调用call umask(0),有效的 umask 是75, 或0o113

这是gdb会议:

的 umask113将说明对 的权限664,这似乎是我所看到的。

我在这里做错了什么,是独角兽行为不端吗?暴发户是否忽略了我的节?我应该将节定义为003,不是0003吗?我的gdb会话工作正常吗,%o printf()语法是否正确?

0 投票
0 回答
1124 浏览

ruby-on-rails - 独角兽和新贵

我很难编写一个新贵配置文件来启动(并保持活动状态)Ubuntu 机器上的独角兽 Web 服务器。

我应该如何设置respawnexpect参数?启用后,进程会不断重新启动(我在respawn顶部看到它的 PID 不断变化,旧的变成僵尸)。如果我删除该指令,则该过程在死亡时不会重新启动。

根据 upstart 文档,expect 参数可能至关重要:独角兽分叉行为是什么?有什么线索吗?

0 投票
4 回答
25940 浏览

node.js - Upstart env 节没有为 Node.js 应用程序设置环境变量(如 NODE_ENV)

我的服务器有一个 Upstart 脚本,如下所示:

但是,该应用没有看到 NODE_ENV 设置为生产。事实上,如果我在应用程序中使用 console.log(process.env),我看不到 NODE_ENV 或 CUSTOM。任何想法发生了什么?

顺便说一句, NODE_ENV=production node app.js 工作得很好。

0 投票
1 回答
512 浏览

ruby - 在我的 gem 中,我应该在哪里放置非 Ruby 文件?

我想在我的 Ruby gem 中放置一个 Upstart 配置文件。这是我目前最好的猜测

一般来说,配置文件和其他类型的脚本放在 gem 中的什么位置?

更新:我将示例中的路径从Upstart/rt_watchdog.conf更改lib/upstart/rt_watchdog.conf为 ,因为这就是我现在决定采用的方法,但我仍然对此感觉不太好。

0 投票
1 回答
2229 浏览

ubuntu - 如何在monit中结合进程和文件检查?

概括

如何在 Monit 中组合多个检查?我想检查进程活动和文件内容/时间戳。


冗长无聊的解释

我正在开发一个 Monit 守护程序来保持我的 Bukkit Minecraft 服务器正常运行。它做了几项检查。目前我有这个代码:

它工作......但它很慢。如果出现问题,我必须等待 20 秒,直到服务器终止。但我需要该超时,因为服务器会不时进行一些重新加载(刷新配置、清理内存等),这会产生很少的延迟。没有timeout 20 seconds for 2 cycles服务器,如果重新加载,服务器将立即终止。

好的,如果真的出现问题,我等待 20 秒直到服务器重新启动是没有问题的。但大多数时候(当出现问题时)服务器上的所有安全机制都会停止工作。

因此,如果服务器没有响应,我需要找到一种方法立即重新启动服务器,但在重新加载时给它一些时间。

我有这种方法:当发出任何命令(包括我用来检查服务器状态的重新加载和 API 调用)时,服务器会将某些内容写入日志文件。所以日志文件的时间戳就是最后一条命令的时间戳。在重新加载期间,不会将任何内容写入文件。所以我可以通过简单的时间戳检查来检测重新加载,并且只有当服务器当前重新加载时,我才会给它 20 秒。