标签: upstart

Ubuntu Upstart 脚本在启动和停止时挂起

我有一个启动自定义码头服务器的新贵脚本。当我什么sudo start [myservice]都没有发生。随后,将其sudo status [myservice]显示为:[myservice] start/killed, process 3586

这是 /etc/init/[myservice].conf 中的脚本:

description "[description]"
author "[my name and email]"
start on runlevel [2345]
stop on runlevel [016]
respawn
expect fork
script
    sudo -u www-data /path/to/grafserv-start.sh >> /tmp/upstart.log 2>&1
end-script
Run Code Online (Sandbox Code Playgroud)

这里是grafserv-start.sh

#!/bin/bash
/usr/bin/java -Djetty.port=3070 -jar /path/to/grafserv/trunk/start.jar
echo "Done starting GrafServ"
Run Code Online (Sandbox Code Playgroud)

我尝试将脚本命令的输出重定向到 tmp 日志文件,但从未创建该文件。当我开始它时,我只是挂起,直到我 ^C。另外,我尝试用 strace 运行它,但这给了我很多关于套接字的东西。

scripting ubuntu upstart

7
推荐指数
1
解决办法
7270
查看次数

如何使用 upstart 启动 rake 任务

我正在尝试将 Resque worker 设置为 Upstart init 脚本,以供 Monit 在 Rails 应用程序中使用。我不是系统管理员,我尝试使用我们服务器上的其他 init 脚本中的示例编写此代码,这是我得到的:

start on startup
stop on shutdown

pre-start script
   cd /var/www/my-app/current
end script

script
   exec bundle exec rake environment resque:work RAILS_ENV=staging PIDFILE=/var/run/resque.pid QUEUE=sync >> /var/log/resque.log
end script
Run Code Online (Sandbox Code Playgroud)

但它不起作用,如果我尝试sudo start resque我得到:

resque start/running, process XXXX
Run Code Online (Sandbox Code Playgroud)

据我所知,什么都没有启动,没有找到 Resque 进程,也没有日志文件。我完全不知道如何让它工作。

更新:我找到了 syslog 文件,它说:

Nov  4 17:20:09 fantasysports init: resque main process (3057) terminated with status 2
Run Code Online (Sandbox Code Playgroud)

更新:我尝试使用 sudo 运行它(是的,这没有意义!)并删除了对日志文件的输出重定向,现在我得到了不同的状态代码:

Nov  4 17:29:44 fantasysports init: resque main process …
Run Code Online (Sandbox Code Playgroud)

upstart bundler

7
推荐指数
1
解决办法
6863
查看次数

使用 Upstart (Ubuntu) 启动时,应用程序未获取环境变量

如何在不重新启动服务器的情况下在系统范围内获取新的环境变量?

作为 Ubuntu 11.x 服务器,我使用 Upstart 来启动/重启进程。

我向 /etc/environment 添加了一个新的环境变量,需要由我的应用程序的一个进程获取。

如果我直接从我的 shell 开始这个过程,这个变量就会被拾取并且一切都很好(我已经为我的会话提供了 /etc/environment )。但是,当我使用其 Upstart 服务名称启动/重新启动进程时,没有看到该变量。

 sudo start app-name
Run Code Online (Sandbox Code Playgroud)

我很确定如果我重新启动服务器,新变量将被选中,但是我想尽量避免这种情况。我有一些其他的实时进程正在运行,如果可能的话,我希望避免中断。

ubuntu environment-variables upstart

7
推荐指数
1
解决办法
5464
查看次数

MongoDB 崩溃时自动重启

我在 Ubuntu 服务器上运行 MongoDB。它使用 upstart 脚本在机器启动时启动 mongod。我注意到如果进程崩溃,它不会重新启动。

我怎样才能确保如果它崩溃了,mongod 进程会重新启动?

upstart mongodb ubuntu-12.04

7
推荐指数
2
解决办法
1万
查看次数

“sudo service nginx start”失败但“sudo nginx”有效 - 不知道为什么

我有一个接近新的服务器,并且在按预期启动 nginx 时遇到问题。我已经以基本相同的方式配置了另一台服务器,它在那里工作。我想这两者之间肯定存在一些环境差异,但我一直没能找到它。

简短版本:

Starts - sudo nginx
Fails - sudo service nginx start
Fails - sudo service nginx restart
works - sudo service nginx stop
Run Code Online (Sandbox Code Playgroud)

当命令失败时,他们实际上并没有说什么:

 * Restarting nginx nginx                                                [fail]
Run Code Online (Sandbox Code Playgroud)

日志文件中没有其他内容(nginx[访问或错误]、系统日志)或写入屏幕

更多细节:

都说配置文件没问题

sudo service nginx configtest
sudo nginx -t
Run Code Online (Sandbox Code Playgroud)
  • 我检查了 nginx.conf 的权限,它们没问题(与工作服务器相同)再次检查 www-data 是否可以访问日志文件等,确实如此

  • /etc/init.d/nginx 文件在两台服务器上是相同的,所使用的命令也是如此(见上文)

  • 日志文件确实存在

  • 用户/组 www-data 确实存在

  • Ubuntu 12.04 LTS

  • nginx 1.6

  • 在每个服务器上运行请求的 - sudo strace service nginx start 除了下面的第一部分之外,我在两个不同的服务器上看到的唯一其他区别是指针和 PID 之类的东西。我在每组的两行前面加上了 ***

==== 那个有效的

clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd6076a09d0) = 24394
close(4)                                = 0
*** …
Run Code Online (Sandbox Code Playgroud)

nginx upstart ubuntu-12.04

7
推荐指数
2
解决办法
3万
查看次数

从 systemd 中的 vagrant-mounted (upstart) 等价物开始

我有一个运行 Ubuntu 15.04 的 Vagrant 盒子,它有一个 upstart 脚本,可以在系统启动时启动一个服务。它有一个start on vagrant-mounted节,因为该服务要求 Vagrant 挂载 /vagrant 目录。

我现在正在将此脚本迁移到 systemd(我是全新的)并且无法在引导期间成功运行脚本,因为 /vagrant 在脚本运行时未安装。After=vagrant-mounted不起作用,但可能有助于显示我正在尝试做的事情。

在引导期间挂载 Vagrant 目录时,如何运行 systemd 单元?

注意systemctl start my.service 确实成功启动了服务,并且服务被systemctl enabled'ed。

ubuntu upstart vagrant systemd

7
推荐指数
1
解决办法
1166
查看次数

无法为 node.js 程序获取启动脚本以在启动时启动

我为应该在启动时运行的 node.js 程序制作了一个相当简单的启动脚本:

start on startup
stop on shutdown

script
    exec sudo -u max WEBSITES_DIR=/home/max/websites/ /usr/local/bin/node /home/max/websites/server.js 2>&1 >> /var/log/node.log
end script
Run Code Online (Sandbox Code Playgroud)

如果我使用:

sudo start my-program 
Run Code Online (Sandbox Code Playgroud)

它有效,但是当我重新启动机器时,我收到错误消息:

init: my-program main process (325) terminated with status 2
Run Code Online (Sandbox Code Playgroud)

有人知道如何调试吗?

ubuntu upstart node.js

6
推荐指数
1
解决办法
4457
查看次数

等效于较新版本的 upstart 中的“pid file”节

我希望能够使用 upstart 来管理我无法完全控制分叉行为的守护进程。“pid”节从 0.3.9 版本开始被删除,所以我不能将它指向一个 pid 文件。解决这个问题的正确方法是什么?我是否必须编写一个发出 SIGSTOP 的包装脚本?

linux ubuntu daemon upstart

6
推荐指数
1
解决办法
4551
查看次数

新贵:在运行级别 [016] 上停止 vs 在启动时停止 rc RUNLEVEL=[016]

所以,我正在为 mysql 编写一个新贵的初始化脚本。应该是微不足道的吧?我的停止节看起来像:

kill timeout 30
stop on runlevel [016]
Run Code Online (Sandbox Code Playgroud)

shutdown now -r和 mysql 大喊我的 MyISAM 表崩溃了,就像kill -9我的 mysql 进程一样。嘘。新贵似乎没有在重新启动之前等待 mysql 退出。在谷歌上的一些搜索发现我这个链接建议我这样做,而不是:

stop on starting rc RUNLEVEL=[016]
Run Code Online (Sandbox Code Playgroud)

事实上,这似乎解决了这个问题。

但是:WFT?本质上,我想在尝试卸载本地文件系统之前确保 mysql 已停止。这是正确的方法吗?为什么我的stop on runlevel节在切换运行级别之前不等待 mysql 停止?

并且:这是你知道的,在任何地方都有记录吗?

ubuntu upstart runlevel

6
推荐指数
1
解决办法
6868
查看次数

我们是否需要明确地将 php.ini 的位置传递给 php-fpm?

我看到一个奇怪的问题,php.ini如果我php-fpm在启动它时没有明确地将它传递给它,则不会使用它。

这是我正在使用的新贵脚本:

start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [016]

pre-start script
    mkdir -p /run/php
end script


expect fork
respawn
exec /usr/local/php/sbin/php-fpm --fpm-config /etc/php/php-fpm.conf
Run Code Online (Sandbox Code Playgroud)

如果 PHP 以上述开头,php.ini则永远不会使用my ,即使它在Configuration File (php.ini) Path.

这是来自phpinfo()以下内容的相关部分:

Configuration File (php.ini) Path           /etc/php/
Loaded Configuration File                   (none)
Scan this dir for additional .ini files     (none)
Additional .ini files parsed                (none) 
Run Code Online (Sandbox Code Playgroud)

如果我修改 upstart 脚本的最后一行php-fpmphp.ini明确指向:

exec /usr/local/php/sbin/php-fpm --fpm-config /etc/php/php-fpm.conf -c /etc/php/php.ini
Run Code Online (Sandbox Code Playgroud)

然后我们看到 …

php.ini php-fpm upstart

6
推荐指数
1
解决办法
1万
查看次数