用于tiddlywiki服务的rc.d脚本无法正常工作

时间:2014-12-18 14:46:15

标签: shell sh freebsd init rc

我想让Tiddlywiki在FreeBSD监狱工作(基于NAS4FEE主机)。 rc.d下面的start_postcmd脚本和PID文件功能不起作用。

有没有人对为什么会出现这种情况有任何建议?

#! /bin/sh
#
#
# PROVIDE: tiddliwiki
# REQUIRE: NETWORKING
# REQUIRE: DAEMON bgfsck
# KEYWORD: shutdown


. /etc/rc.subr

name="tiddlywiki"
rcvar="tiddlywiki_enable"

#start_cmd="tiddlywiki_start"
#stop_cmd="tiddlywiki_stop"

pidfile="/var/run/${name}.pid"


start_cmd="/usr/local/bin/node /usr/local/bin/tiddlywiki gosh --server 80 &"

# needed to set pid manualy as the rc.subr pid pid didn't work  
start_postcmd="sleep 5 ; ps aux | grep -i 'gosh --server 80' | awk 'NR<2 {print $2}' > /var/run/${name}.pid"

stop_cmd="cat /var/run/${name}.pid | xargs kill -9"

load_rc_config $name 
run_rc_command "$1"

1 个答案:

答案 0 :(得分:1)

基于对发生相同事情的丰富经验的快速清单列出了可能的原因:

  • 权限。节点应用程序是否具有该文件的写入权限?该文件是否已存在?

  • 您的start_postcmd可能没有抓住/抓取PID,因为该进程实际上没有运行。港口是否已被占用?你能从shell开始tiddlywiki吗?

  • 您的start_postcmd可能无法正确捕获/抓取PID,因为命令行很长并已包含在进程列表中。尝试添加w并在shell中测试几次:ps auxww | grep -i 'gosh --server 80' | awk 'NR<2 {print $2}'

使用forever等节点工具可能会更好。通过一些工作,你可以制作一个start_cmd。还有其他几种类似的工具,从简单到近核电站就绪。随机选择http://www.npmjs.org

祝你好运。