Sai*_*han 2 linux centos shell daemon
我知道有一个名为 upstart 的程序可以轻松制作小型守护程序。我无法在 CentOS 上配置此程序。我收到各种有关 pkg-congfig、libnih 和 dbus 的错误。
我正在开发一个 node.ja 应用程序,启动和停止一直很痛苦,所以我想为此创建一个守护进程,它可以轻松启动和停止。
更新 1
我将举一个我需要这个项目的小例子,我希望有人可以帮助解决这个问题。
要启动 node.js 应用程序,我必须输入 SSH:
# node /path-to-file/filename.js
Run Code Online (Sandbox Code Playgroud)
现在,当我执行此终端冻结时,我必须按 CTRL + Z (pc) 才能返回输入。
现在,当我更改文件中的某些内容时,我必须再次重新加载它
我需要:
# killall -9 node
Run Code Online (Sandbox Code Playgroud)
这会杀死所有正在运行的节点应用程序
接下来我必须再次启动脚本
# node /path-to-file/filename.js
Run Code Online (Sandbox Code Playgroud)
我只想打字
# myapp restart
Run Code Online (Sandbox Code Playgroud)
一切都完成了。这种类型的设置会为我节省很多时间
更新 2
我找到了一个名为 monit 的程序。这很好用,并且在崩溃时自动启动应用程序,这很好。它还有一个很好的网络界面,也很方便。
我可以打字
# monit myapp start(start/stop/restart)
Run Code Online (Sandbox Code Playgroud)
这工作正常。只有一个缺点,这是一个主要的缺点。当我启动 myapp 应用程序时,它不显示 node.js 引发的编译错误。所以当它无法启动时,我不知道是什么原因。我必须再次键入整个 '# node /path-to-file/filename.js' 以检查错误。
waz*_*oox 10
你不需要任何特别的东西来制作一个守护进程,真的。任何语言的任何程序都可以“守护”自身。或者,您可以使用一个小的 shell 脚本包装器来守护现有的程序(例如 /etc/init.d 程序启动器可以处理它)。
通常,守护程序具有以下属性:
更新 1
Monit 基本上处理了我在这里给出的血腥细节。有关 STDIN/STDOUT、/dev/null 等的详细信息,这些是基本的 Unix 概念,因此我想您迟早需要深入研究。例如参见这个Unix 介绍。
更新 2
守护程序的 shell 脚本如下所示。请注意,这不适用于留在前台的程序。
#!/bin/sh
DAEMON=/some/program/to/run
PARAMETERS="parameters to my program"
LOGFILE=/var/log/somefile.log
start() {
echo -n "starting up $DAEMON"
RUN=`cd / && $DAEMON $PARAMETERS > $LOGFILE 2>&1`
if [ "$?" -eq 0 ]; then
echo "Done."
else
echo "FAILED."
fi
}
stop() {
killall $DAEMON
}
status() {
killall -0 $DAEMON
if [ "$?" -eq 0 ]; then
echo "Running."
else
echo "Not Running."
fi
}
case "$1" in
start)
start
;;
restart)
stop
sleep 2
start
;;
stop)
stop
;;
status)
status
;;
*)
echo "usage : $0 start|restart|stop|status"
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)