0

init.d スクリプトを使用して、起動時に Ubuntu で Hudson を自動的に起動しようとしています。このスクリプトは、手動で (つまり ./hudson start で) 起動すると問題なく動作し、rc2-rc5 に update-rc.d によって生成されたシンボリック リンクがありますが、再起動しても起動しません。機能しない原因を誰か知っていますか? スクリプトは次のとおりです (hudson.log ログファイルは起動時に作成されますが、出力は含まれません)。


#!/bin/sh
### BEGIN INIT INFO
# Provides:          hudson
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Hudson at boot
# Description:       Start the Hudson CI server at boot
### END INIT INFO

CTL=/home/jcss-dev/hudson.war
LOGFILE=/home/jcss-dev/hudson.log

case "$1" in
    start)
                pid=`/bin/ps -Af | /bin/grep "hudson.war" | /bin/grep -v /bin/grep | /usr/bin/awk '{print $2}'`
                if [ "$pid" = "" ]; then
      echo -n "Starting Hudson... "
                    su - the-user-account-name -c "/usr/bin/java -jar $CTL > $LOGFILE 2>&1 &"
  else
      echo -n "Hudson is already running"
  fi
        ;;
    stop)
  pid=`/bin/ps -Af | /bin/grep "hudson.war" | /bin/grep -v /bin/grep | /usr/bin/awk '{print $2}'`
  if [ "$pid" != "" ]; then
      echo -n "Stopping Hudson... "
      kill -9 $pid
  else
      echo "Hudson is not running"
  fi
        ;;
    status)
                pid=`/bin/ps -Af | /bin/grep "hudson.war" | /bin/grep -v /bin/grep | /usr/bin/awk '{print $2}'`
                if [ "$pid" != "" ]; then
      echo -n "Hudson is running"
  else
      echo -n "Hudson is not running"
  fi
        ;;
    *)
        echo "Usage $0 start|stop|status"
        exit 1
        ;;
esac

exit 0
4

3 に答える 3

1

手動で実行する場合、つまりスクリプトに問題はありません... /etc/init.d フォルダーにコピー/移動し、rc[2345].d ディレクトリのリンク ファイルを確認してください。

おそらく、この質問はserverfault.comにあるはずです

于 2009-10-15T03:44:00.553 に答える
0

あまりにも基本的な質問をする危険を冒して、スクリプトの開始セクションの su コマンドに「the-user-account-name」の代わりに「jcss-dev」があると想定していますか?

于 2010-02-15T16:41:48.257 に答える
0

rcに追加しましたか??

sudo update-rc.d hudson.sh defaults

わたしにはできる...

于 2010-01-22T09:45:22.507 に答える