一个用于自动设置daemontools配置的shell脚本(备忘录)。(Equivalent English translation: A shell script (memo) for automatically configuring daemontools settings.)

在中国首先需要有一些前提条件

    daemontoolsが使えるようになっていること

以上,呵呵。

创建shell脚本

将以下的shell脚本放置在已设置了路径的位置,并赋予执行权限。
本文将以名为”daemonctl”的脚本为例进行说明。

#!/bin/sh

# Current working directory
CWD=`pwd -P`

SERVICE=`pwd | awk -F"/" '{print $NF}'`

# Options
OPT=$1
SCRIPT=$2

# Display help
if [ -z $OPT ]; then
  echo "Usage: "`echo $0 | awk -F"/" '{print $NF}'`" [option]"
  echo "  start: start service."
  echo "   stop: stop service."
  echo "restart: restart service."
  exit
fi

# When in stop mode, if there was no service directory.
if [ "$OPT" != "stop" ]; then
  if [ ! -f "$SCRIPT" ]; then
    START="$CWD/start.sh"
  else
    START=$SCRIPT
  fi

  if [ ! -f "$START" ]; then
    echo "require start.sh script."
    exit
  fi
fi

if [ ! -d "$CWD/service/$SERVICE" ]; then
  mkdir -p $CWD/service/$SERVICE
  cat << EOF > $CWD/service/$SERVICE/run
#!/bin/sh

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

cd $CWD
exec $START
EOF
  chmod 755 $CWD/service/$SERVICE/run
fi

#=============================================================================
# Start daemon
#=============================================================================
if [ "${OPT}" = "start" ]; then
  if [ ! -L /etc/service/$SERVICE ]; then
    ln -s $CWD/service/$SERVICE /etc/service/
  fi
        svc -u /etc/service/$SERVICE > /dev/null 2>&1
  echo "Start daemon service [$SERVICE]."

#=============================================================================
# Stop daemon
#=============================================================================
elif [ "${OPT}" = "stop" ] && [ -L /etc/service/$SERVICE ]; then
  svc -d /etc/service/$SERVICE > /dev/null 2>&1
  rm -rf /etc/service/$SERVICE
  PID=`ps ax | grep "supervise $SERVICE" | grep -v 'grep' | awk '{print$1}'`
        kill -9 $PID
  echo "Stop daemon service [$SERVICE]."

#=============================================================================
# Restart daemon
#=============================================================================
elif [ "${OPT}" = "restart" ]; then
  svc -d /etc/service/$SERVICE > /dev/null 2>&1 && svc -u /etc/service/$SERVICE > /dev/null 2>&1
  echo "Restart daemon service [$SERVICE]."
fi

只需要一种选项:
权限是,

$ chmod 755 daemonctl

请用中文以某种类似的感觉加上。

脚本说明

首先,我会进入需要使用daemontools监视的工具的目录。
如果目录不存在,我会在适当的位置创建目录并进入。
然后,我会以”start.sh”的名称编写工具的启动脚本。
似乎必须使用”exec”命令启动,否则daemontools无法正确监视。

如果能够创建启动脚本,可以按以下方式执行。

$ daemonctl start

すると、カレントディレクトリにある「start.sh」を起動スクリプトとしてdaemontoolsがツールを起動し、プロセス監視を開始します。
実行すると「[カレントディレクトリ]/service/[カレントディレクトリ名]」というディレクトリが作成されているはず。
例)
カレントディレクトリが「minecraft」だった場合、「./service/minecraft」というディレクトリが作成されているはず。
これが、daemontoolsが監視するために使用するディレクトリ。
通常はエディタなどで中にある「run」というファイルを記述して「/etc/service」配下にシンボリックリンクを貼ったりしないといけなかったが、それをシェルスクリプトで実行するようにしてあります。
実行してエラーなどが出なかった場合に、

$ ps ax | grep minecraft

查看此类过程时,我认为会出现两个选项,即“监督”和已启动的工具。

$ daemonctl stop

执行此操作后,工具将停止运行,并且daemontools的监控也将停止。
通过检查进程,您应该能够确认之前的两个进程已经消失了。

$ daemonctl start [起動スクリプトのPATH]

要进行这样做,您还可以指定除了「start.sh」之外的启动脚本。

“Daemontools是什么?”

如果有这样的人,请自行搜索。由于存在光盘装载工具的Windows版本,请试着进行适当的搜索。

广告
将在 10 秒后关闭
bannerAds