标签: start-stop-daemon

如何优雅地处理SIGTERM信号?

让我们假设我们有一个用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 daemon sigterm start-stop-daemon

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

如何记录start-stop-daemon启动的进程的stdout?

我使用init脚本来运行一个简单的进程,该进程以:

start-stop-daemon --start --quiet --chuid $DAEMONUSER    \
    --make-pidfile --pidfile $PIDFILE --background       \
    --exec $DAEMON $DAEMON_ARGS
Run Code Online (Sandbox Code Playgroud)

名为$ DAEMON的进程通常将日志信息打印到其标准输出.据我所知,这些数据没有存储在任何地方.

我想将$ DAEMON的stdout写入或附加到某个文件中.

我知道的唯一解决方案是告诉start-stop-daemon直接调用一个shellscript而不是$ DAEMON; 然后脚本调用$ DAEMON并写入日志文件.但这需要一个额外的脚本,就像修改守护进程本身一样,似乎是解决这种常见任务的错误方法.

logging stdout init.d start-stop-daemon

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

什么是linux脚本中的start-stop-daemon?

什么是start-stop-daemon以及如何使用它?

我正在尝试自动运行特定程序.只要系统启动,程序就应该运行.为此,我正在编写脚本/etc/init.d/.

linux shell init.d start-stop-daemon

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

在Linux上启动JBoss 7作为服务

以前的JBoss版本包含一个脚本(如jboss_init_redhat.sh),可以复制到/etc/init.d以便将其添加为服务 - 因此它将在启动时启动.我似乎无法在JBoss 7中找到任何类似的脚本.有没有人已经做过这样的事情?

PS我试图在Ubuntu 10.04中实现这一点

linux ubuntu ubuntu-10.04 start-stop-daemon jboss7.x

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

我该如何运行rails服务器守护进程?

我是rails世界的新手,需要在守护进程模式下运行我的rails测试服务器.

我注意到有一个-d标志,但它不适合我..

rails -s -d 
Run Code Online (Sandbox Code Playgroud)

不应该这样吗?

ruby-on-rails start-stop-daemon

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

start-stop-daemon和python

我正在尝试使用start-stop-daemon启动python脚本:

sudo /sbin/start-stop-daemon --start --pidfile /home/loop.pid \ 
--user www-data --group www-data -b --make-pidfile --chuid www-data \
--exec /usr/bin/python /home/loop.py --verbose
Run Code Online (Sandbox Code Playgroud)

但我的进程中没有python脚本.我做错了什么?

loop.py:

import time
while True:
    print "working..."
    time.sleep(3)
Run Code Online (Sandbox Code Playgroud)

python cron start-stop-daemon

10
推荐指数
1
解决办法
4784
查看次数

"start-stop-daemon:无法统计"

我有以下开始 - 停止脚本:

NAME="examplestartstop"
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
LOGFILE="/var/log/$NAME/start-stop-daemon.log"
APP_DIR="/usr/bin"
APP_BIN="tail -250f /var/log/apache2/error.log"
USER="minecraft"
GROUP="minecraft"

# Include functions
set -e
. /lib/lsb/init-functions

start() {
  echo "Starting '$NAME'... "
  start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec "$APP_DIR/$APP_BIN" $LOGFILE || true
  echo "done"
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行脚本时,我得到以下输出:

$ ./test start
Starting 'examplestartstop'...
start-stop-daemon: unable to stat /usr/bin/tail -250f /var/log/apache2/error.log (No such file or directory)
done
Run Code Online (Sandbox Code Playgroud)

我做错了$APP_DIR/$APP_BIN什么?

linux bash debian start-stop-daemon

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

start-stop-daemon和java程序

我有一点时间使用start-stop-daemon在java脚本中正确启动java程序.我已经编写了init脚本,它似乎运行但是之后从来没有一个进程表示正在运行的程序.

这是我的init脚本的片段

#! /bin/sh
#
#

DAEMON="/usr/bin/java"
DAEMON_ARGS="-server -cp <bunch of RMI arguments and classpath stuff> -jar <absolute path>/myprog.jar"

PIDFILE="/var/run/myprog.pid"

case "$1" in
start)
    echo -n "Starting myprog"
    start-stop-daemon --start --pidfile "$PIDFILE" --chuid "myuser" --verbose --background --make-pidfile --startas "$DAEMON" -- $DAEMON_ARGS
    echo "."
;;
Run Code Online (Sandbox Code Playgroud)

当我尝试通过/etc/init.d启动它时,我得到以下内容:

/etc/init.d# /etc/init.d/myscript start

启动myprogStarting/usr/bin/java ...

重启以启动/usr/bin/java..done.

.

之后,没有运行java解释器进程,执行myprog.jar

我已经尝试了--exec, - start的各种组合,或多或少相同的结果.如果我能更清楚地了解正在发生的事情,我相信我可以解决这个问题,但我不确定如何做到这一点.

有什么建议?

(我在嵌入式ARM平台上运行Angstrom,因此Java Service Wrapper实际上不是一个可行的选择,即我认为它不适用于ARM)

我被困了所以任何建议都会非常感激.

谢谢.

java arm start-stop-daemon angstrom-linux

8
推荐指数
2
解决办法
6486
查看次数

如何通过start-stop-daemon优雅地关闭Spring Boot应用程序

我们有一个多线程Spring Boot应用程序,它在Linux机器上作为守护进程运行.当我尝试通过这样的start-stop-daemon停止应用程序时

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
Run Code Online (Sandbox Code Playgroud)

发送SIGTERM信号,应用程序即将结束.但是我希望应用程序等待,直到每个线程完成它的工作.

有没有办法,如何管理收到SIGTERM信号时会发生什么?

java multithreading start-stop-daemon spring-boot

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

start-stop-daemon错误(Exec格式错误)

此命令是upstart脚本的一部分,该脚本曾用于ubuntu 12.04,10.04.

sudo start-stop-daemon --start --make-pidfile --pidfile /var/run/mk_order_handler.pid --chuid ubuntu --exec /data2/src/jeapps/sites/crons_index.php workers/mk_order_handler

我刚刚将系统升级到14.04并且upstart脚本停止工作.当我手动执行start-stop-daemon命令时,我得到了Exec format error.

我能看到的唯一区别是,脚本放在一个单独的块设备中.它会引起问题吗?我怎么能修复这个错误?

upstart start-stop-daemon ubuntu-14.04

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