标签: start-stop-daemon

芹菜守护进程的问题

我们的芹菜守护进程非常脆弱.我们使用结构部署脚本在每次推送更改时重新启动守护程序,但由于某种原因,这会导致大量问题.

每当运行部署脚本时,芹菜进程都会处于某种伪死状态.他们(不幸的是)仍然会从rabbitmq中消耗任务,但他们实际上并没有做任何事情.令人困惑的简短检查表明在这种状态下一切似乎都很"好",celeryctl状态显示一个节点在线并且ps aux | grep芹菜显示2个运行过程.

但是,尝试运行/etc/init.d/celeryd手动停止会导致以下错误:

start-stop-daemon: warning: failed to kill 30360: No such process
Run Code Online (Sandbox Code Playgroud)

虽然在这种状态下尝试运行celeryd start似乎工作正常,但实际上什么也没做.解决问题的唯一方法是手动终止正在运行的芹菜进程,然后再次启动它们.

有什么想法在这里发生了什么?我们也没有完全确认,但我们认为问题也会在几天之后(当前没有活动,这是一个测试服务器)在没有部署的情况下自行开发.

django daemon celery django-celery start-stop-daemon

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

即使文件存在,start-stop-daemon也不会写入nginx.pid文件

这似乎是一个重复的问题,但事实并非如此.我在其上发现了一些start-stop-daemon没有创建PID文件的文章.但就我而言,我已经创建了PID文件.我在服务器上执行此命令以启动Nginx:

/mnt/nginx/logs/nginx.pid
start-stop-daemon --start --quiet --pidfile /mnt/nginx/logs/nginx.pid --exec /usr/local/sbin/nginx
Run Code Online (Sandbox Code Playgroud)

PID文件已存在但仍未start-stop-daemon写入文件.我甚至尝试使用该--make-pidfile选项,但随后start-stop-daemon写入错误的pid到文件.

nginx start-stop-daemon

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

在背景中的EC2上运行python flask

我在python烧瓶上创建了一个小应用程序并部署在EC2 aws机器上,当我对ec2机器进行ssh并启动烧瓶时,它可以工作,但是当我终止会话时烧瓶死了,我可以使用nohup运行它.使其独立于ssh会话并持续运行的最佳方法是什么.

谢谢

amazon-ec2 flask start-stop-daemon

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

如何在Java中正常处理SIGTERM信号?

假设我们有一个用Java编写的琐碎的守护程序:

public class Hellow {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        while(true) {
            // 1. do
            // 2. some
            // 3. important
            // 4. job
            // 5. sleep
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我们将其守护进程start-stop-daemon默认情况下使用以下命令发送SIGTERM(TERM)信号:--stop

假设当前执行的步骤是#2。此时此刻,我们正在发送TERM信号。

发生的事情是执行立即终止。

我发现我可以使用处理信号事件,addShutdownHook()但事实是它仍然会中断当前执行并将控件传递给处理程序:

public class Hellow {
    private static boolean shutdownFlag = false;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application …
Run Code Online (Sandbox Code Playgroud)

java daemon process sigterm start-stop-daemon

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

如何使用daemontools监督网络服务器?

我应该如何编写daemontools监督员的脚本?

我已经开始使用DJ Bernsteins的daemontools来保持一些进程运行并且运行正常.但是现在我需要监控这些流程的其他几个条件,但我没有找到关于如何做到这一点的好信息.

我的方案是我有一些运行Web应用程序(pharo smalltalk虚拟机)的进程,并且它们响应http,每个进程都在它们的端口(这是for loadbalance).我想以某种方式ping那些来验证它们不仅运行但响应http请求.如果他们没有以某种方式响应超过30秒的请求,他们应该被视为崩溃并且只需重新启动.

daemontools甚至可以实现这一点吗?如果是这样,我应该如何编写这个脚本?我应该把它放在哪里?或者关于这个的文件在哪里?

webserver daemon smalltalk start-stop-daemon

5
推荐指数
1
解决办法
1175
查看次数

如何重定向 Debian 上使用 start-stop-daemon 启动的进程的进程输出?

已经有几个关于此的问题,但似乎没有一个有效。我有一个当前已关闭的生产系统,我需要能够快速从守护进程获取 stderr 输出以对其进行调试。

我以为我可以从调用点(在 init.d 脚本中)重定向输出,但事实证明这是极其困难的。

 start-stop-daemon -d $DDIR -b -m --start --quiet -pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS > /var/log/daemon.log 2>&1 \
                || return 2
Run Code Online (Sandbox Code Playgroud)

这是行不通的。我尝试运行一个 shell 脚本来调用可执行文件并重定向输出,但日志文件仍然为空(而且我确实知道该进程正在输出信息)。

任何帮助将不胜感激。

linux bash logging debian start-stop-daemon

5
推荐指数
1
解决办法
8657
查看次数

在OS X中使用NSTask在特定用户下运行“ launchctl”命令

我的应用程序是在root环境下启动的,我需要能够使用NSTask和launchctl卸载进程,这是我要做的代码:

    NSPipe *pipe = [NSPipe pipe];

    NSTask *task = [[NSTask alloc] init];
    [task setLaunchPath: @"/bin/launchctl"];
    [task setCurrentDirectoryPath:@"/"];
    [task setStandardError:pipe];

    NSLog(@"/bin/launchctl unload %@", plistAutostartLocation);

    NSArray *arguments;
    arguments = [NSArray arrayWithObjects: enableCommand, plistAutostartLocation, nil];
    [task setArguments: arguments];

    NSFileHandle * read = [pipe fileHandleForReading];

    [task launch];
    [task waitUntilExit];
Run Code Online (Sandbox Code Playgroud)

如果需要卸载的进程在“ root”下启动,那么如果没有失败,它将成功卸载。问题是如何在特定用户(例如“ myusername”)下运行“ launchctl”?

编辑:在终端中,如果我想在特定用户下运行某些命令,我​​接下来要做,它运行良好:

su-myusername -c“ ls / Users / myusername”

但是,当我尝试在特定用户下运行“ launchctl”时,它将失败:

su-myusername -c“启动文件/Library/LaunchAgents/com.google.keystone.agent.plist”

它说:“找不到任何内容”

daemon objective-c nstask start-stop-daemon

5
推荐指数
1
解决办法
819
查看次数

Debian start-stop-daemon.Java启动jar文件

我在/etc/init.d/中的一个shellcript中有这个命令

start-stop-daemon --start --quiet --make-pidfile --pidfile /var/run/$NAME.pid --background --exec /usr/bin/java -jar /home/username/myjar.jar 
Run Code Online (Sandbox Code Playgroud)

如果我执行此操作,我会收到此错误

start-stop-daemon: unable to stat /usr/bin/java -jar /home/username/myjar.jar (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

如果我执行

/usr/bin/java -jar /home/username/myjar.jar 
Run Code Online (Sandbox Code Playgroud)

在命令行一切都很好..我没有得到我的错误:(

java service debian jar start-stop-daemon

5
推荐指数
1
解决办法
6298
查看次数

服务器重启后 Puma 无法启动

我使用 capistrano 部署了项目,但是 puma 在服务器重新启动后无法启动。

我应该做 ->生产 puma 帽子:每次都开始

我尝试过:

/etc/init.d/myscript

#!/bin/sh
/etc/init.d/puma_start.sh
Run Code Online (Sandbox Code Playgroud)

puma_start.sh

#!/bin/bash 
puma -C /root/project/shared/puma.rb
Run Code Online (Sandbox Code Playgroud)

但是,我有错误

/usr/local/rvm/rubies/ruby-2.3.3/lib/ruby/site_ruby/2.3.0/rubygems.rb:270:in `find_spec_for_exe': can't find gem puma (>= 0.a) (Gem::GemNotFoundException)
    from /usr/local/rvm/rubies/ruby-2.3.3/lib/ruby/site_ruby/2.3.0/rubygems.rb:298:in `activate_bin_path'
    from /usr/local/rvm/gems/ruby-2.3.3@project/bin/puma:22:in `<main>'
    from /usr/local/rvm/gems/ruby-2.3.3@project/bin/ruby_executable_hooks:15:in `eval'
    from /usr/local/rvm/gems/ruby-2.3.3@project/bin/ruby_executable_hooks:15:in `<main>'
Run Code Online (Sandbox Code Playgroud)

如果我放入控制台,root@host:~# puma -C /root/project/shared/puma.rb它就可以工作,一切都很好。

我想我没有通往 gem puma 的正确路径

服务器重启后如何进行 puma 自动启动
谢谢

linux capistrano ruby-on-rails start-stop-daemon puma

5
推荐指数
1
解决办法
5129
查看次数

使用Jenkins自动启动多个celery守护进程

我有一个Ubuntu服务器,上面运行着5个不同的django站点.这些用于测试,因此每个开发人员都有自己的站点和数据库以及一个集成代码站点,只有在功能准备就绪时才会更新.每当更改被推送到存储库时,Jenkins用于从Github更新每个站点.

我们最近将Django-Celery添加到我们的依赖项中,以便我们可以异步地对上传的文件进行一些处理.每个站点现在都需要自己的芹菜队列,该队列使用该特定站点的正确设置(数据库,上载目录等).

我希望每当代码更改时重启每个芹菜服务器,以便它可以自动获得最新的更改.我们的git存储库中有一个更新脚本,Jenkins会在更新站点时运行.当我尝试在此脚本中启动celery守护程序时,celery启动,但在脚本结束时再次关闭.

这是我的更新脚本的副本:

#!/bin/bash

# Delete all *.pyc files
find $WORKSPACE -name '*.pyc' | xargs rm

# Update the database
[…]

# Run automated tests
python code/manage.py test <project> --noinput
TEST_STATUS=$?

# Refresh this repo's public website
touch $WORKSPACE/apache/wsgi.py

# Restart our celery daemon for this installation
/sbin/start-stop-daemon --stop -p $WORKSPACE/../celery.pid
echo 'Starting Celery Server'

# When run on the command line, this line starts a daemon just fine
/sbin/start-stop-daemon --start --background --quiet --oknodo -p $WORKSPACE/../celery.pid -m --exec $WORKSPACE/code/manage.py …
Run Code Online (Sandbox Code Playgroud)

deployment django celery jenkins start-stop-daemon

4
推荐指数
1
解决办法
2089
查看次数

start-stop-daemon和Valgrind

我使用start-stop-daemon启动程序,并希望与Valgrind一起使用它.

这是我使用start-stop-daemon的方式:

start-stop-daemon --start --background --exec ${BINPATH}/myPgm -- myPgm
Run Code Online (Sandbox Code Playgroud)

这就是我在独立应用程序(垃圾)上使用Valgrind的方式:

valgrind --tool=memcheck --leak-check=yes ./junk
Run Code Online (Sandbox Code Playgroud)

这很有效.

我想做的事情如下:

start-stop-daemon --start --background --exec valgrind --tool=memcheck --leak-check=yes --log-file=/usr/magnus/logFile ${BINPATH}/myPgm -- myPgm
Run Code Online (Sandbox Code Playgroud)

似乎start-stop-daemon接受valgrind(如果我只有valgrind没有它的标志--tool=memcheck --leak-check=yes --log-file=/usr/magnus/logFile它似乎被接受)但start-stop-daemon不会接受它.

我得到了start-stop-daemon:unrecognized option '--tool=memcheck'对于valgrind标志.

有谁知道如何做到这一点?

valgrind start-stop-daemon

3
推荐指数
1
解决办法
1865
查看次数

Ubuntu upstart将挂起启动/停止/等

我在Ubuntu上有几个服务,它们将开始使用'upstart'.它们按照要求工作,但是当我使用'stop/start/restart {myservice}'时它将挂起(但会按要求执行).

我知道它与分叉有关.

我的服务是python脚本,它将在启动时创建新线程.一个脚本将创建1个新线程(并将继续在主线程上运行),第二个脚本将创建2个新线程并继续在主线程上运行,第三个将不创建新线程.

所有这些都挂在命令上.

所有在/ etc/init中使用相同的代码如下:

description "my service"
version "1.0"
author "my name, 2013"

expect fork

start on runlevel [2345]
stop on runlevel [!2345]
respawn


chdir <to script dir>

exec /usr/bin/python ./scriptname/
Run Code Online (Sandbox Code Playgroud)

您认为可能是什么问题?'fork'与创建新线程有什么关系吗?

python ubuntu upstart python-daemon start-stop-daemon

3
推荐指数
1
解决办法
8053
查看次数

shibd_Default 服务无法启动

在配置 Shibbolet SP 时,我必须在重新配置 shibboleth2.xml 文件后多次停止和启动 shibd 服务。一开始一切正常,但后来就无法启动了!

在 cmd 上运行此命令时C:\>net start shibd_default,我得到以下信息:

The Shibboleth 2 Daemon <Default> service is starting.
The Shibboleth 2 Daemon <Default> service could not be started.

The service did not report an error.
Run Code Online (Sandbox Code Playgroud)

当尝试从控制面板>服务>管理工具运行它时,我收到此错误

   The Shibboleth 2 Daemon <Default> service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.
Run Code Online (Sandbox Code Playgroud)

我重新安装了 Shibboleth SP 来解决这个问题,但仍然出现这个错误!

谁能帮我解决这个问题吗?

谢谢

shibboleth service-provider start-stop-daemon

0
推荐指数
1
解决办法
3544
查看次数