web-dev-qa-db-ja.com

起動時にスクリプトを実行する

Javaアプリケーションを自動的に起動するスクリプトがあります。

# colors
red='\e[0;31m'
green='\e[0;32m'
yellow='\e[0;33m'
reset='\e[0m'

echoRed() { echo -e "${red}$1${reset}"; }
echoGreen() { echo -e "${green}$1${reset}"; }
echoYellow() { echo -e "${yellow}$1${reset}"; }

# Check whether the application is running.
# The check is pretty simple: open a running pid file and check that the process
# is alive.
isrunning() {
  # Check for running app
  if [ -f "$RUNNING_PID" ]; then
    proc=$(cat $RUNNING_PID);
    if /bin/ps --pid $proc 1>&2 >/dev/null;
    then
      return 0
    fi
  fi
  return 1
}

start() {
  if isrunning; then
    echoYellow "Test App Already Running"
    return 0
  fi

  pushd $APPLICATION_DIR > /dev/null
  Nohup Java -jar *.jar>test.out 2>test.err &
  echo $! > ${RUNNING_PID}
  popd > /dev/null

  if isrunning; then
    echoGreen "Test Application started"
    exit 0
  else
    echoRed "The Test Application has not started - check log"
    exit 3
  fi
}

restart() {
  echo "Restarting Test Application"
  stop
  start
}

stop() {
  echoYellow "Stopping Test Application"
  if isrunning; then
    kill `cat $RUNNING_PID`
    rm $RUNNING_PID
  fi
}

status() {
  if isrunning; then
    echoGreen "Test Application is running"
  else
    echoRed "Test Application is either stopped or inaccessible"
  fi
}

case "$1" in
start)
    start
;;

status)
   status
   exit 0
;;

stop)
    if isrunning; then
        stop
        exit 0
    else
        echoRed "Application not running"
        exit 3
    fi
;;

restart)
    stop
    start
;;

*)
    echo "Usage: $0 {status|start|stop|restart}"
    exit 1
esac

参照:- https://vertx.io/blog/vert-x-3-init-d-script/

Sudo service test startを使用してこのコマンドを実行すると、正常に動作します。起動時にこれを自動的に実行したい。 test.service/etc/systemd/systemファイルを作成しようとしました。サービスが起動しない場合。

[Unit]
Description=Test service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=test
ExecStart=/etc/init.d/test start

[Install]
WantedBy=multi-user.target

これの何が問題になっていますか?

2
Janith

Systemdスクリプトを書く必要はありませんtest.service起動時にinit.dスクリプトを有効にします。 init.dスクリプトがすでに正常に機能している場合は、次のコマンドを実行して、起動時にinit.dスクリプトを実行できるようにする必要があります。

Sudo update-rc.d test defaults
Sudo update-rc.d test enable
1
Ketan Patel