我需要从 Debian 中的应用程序创建一个守护进程。在 Debian 中是否有任何标准工具,例如 Ubuntu 中的“新贵”?我只需要启动-停止命令,就可以使用一些选项和 pid 文件将程序作为守护进程启动,并用 pid 文件杀死它。
我查看了 init.d,但似乎这些用于启动时启动。我想手动启动我的守护进程。
我正在尝试编写init
配置,将我的守护进程的输出重定向到两个文件(对于 stdout 和 stderr)。问题是,它不起作用。我现在正在读这个。
所以,我已经完成了这个 shell 脚本来测试这种方法。它不起作用:
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Seed kurokikaze starter"
#NAME=node
DAEMON="/etc/node-version/0.1.99/bin/node"
DAEMON_ARGS="/etc/seed/kurokikaze/server.js"
DAEMON_DIR="/etc/seed/kurokikaze"
APPLOG_FILE="/var/log/seed/kurokikaze"
ERRLOG_FILE="/var/log/seed/kurokikaze-err"
PIDFILE="/var/run/seeds/kurokikaze.pid"
SCRIPTNAME="/etc/seed-init/kurokikaze"
NCMD="exec $DAEMON $DAEMON_ARGS 1>>$APPLOG_FILE 2>>$ERRLOG_FILE"
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON --startas /bin/sh -- $NCMD
Run Code Online (Sandbox Code Playgroud)
但是,如果您在没有将守护程序包装在单独的 shell 中的情况下启动它,它会按预期工作(只是没有 stderr/stdout 重定向):
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON -- ${DAEMON_ARGS}
Run Code Online (Sandbox Code Playgroud)
问题是:为什么第一个脚本不起作用?系统是Debian Lenny,start-stop-daemon
版本是1.14.29
我刚刚从源代码安装了 git 1.6.0,但现在发生了奇怪的事情:
debian:~/git# git version
git version 1.5.6.5
debian:~/git# which git
/usr/local/bin/git
debian:~/git# /usr/local/bin/git version
git version 1.6.0
Run Code Online (Sandbox Code Playgroud)
如何使 1.6.0 二进制默认值?系统是 Debian Lenny。Git 安装了简单的 ./configure && make && make all
.