web-dev-qa-db-ja.com

起動時に管理者権限でTomcatを起動します

システムにログインする前に、1つのプロセスを実行する必要があります。サービスのようにそれを実行するには? Linuxでサービスを行うにはどうすればよいですか?

UbuntuとFedoraでは?サービスはカスタマイズされたTomcatです

23
Sajad Bahmani

サービスを実行するにはなしまたは以前システムにログインする(つまり、「起動時」)ために、起動スクリプトを作成して起動シーケンスに追加する必要があります。
サービススクリプトには、開始、停止、再起動の3つの部分があります。
サービススクリプトの基本構造は次のとおりです。

#!/bin/bash
#
RETVAL=0;

start() {
echo “Starting <Service>”
}

stop() {
echo “Stopping <Service>”
}

restart() {
stop
start
}

case “$1″ in
start)
  start
;;
stop)
  stop
;;
restart)
  restart
;;
*)

echo $”Usage: $0 {start|stop|restart}”
exit 1
esac

exit $RETVAL  

スクリプトを好みに合わせて調整したら、/ etc/init.d /に配置します。
そして、それをシステムサービスの起動プロセスに追加します(Fedoraでは、私はUbuntuユーザーではありません、> D)。

chkconfig -add <ServiceName>  

サービスがシステムの起動プロセスに追加され、手動で再起動する必要はありません。

乾杯!

23
wormintrude

Initシステムによって、異なる方法でinitスクリプトを作成します。 Fedoraはupstartとsystemdから選択できるようにし、もちろんSysV互換性を提供します。

新興企業

  • サービス定義ファイルを/etc/init/custom-Tomcat.confとして作成します
  • 入れる:

    start on stopped rc RUNLEVEL=3
    respawn
    exec /path/to/your/Tomcat --and --parameters
    

そして、Tomcatはシステムの起動時に起動するはずです。

Systemd

  • /etc/systemd/system/custom-Tomcat.serviceにサービス定義を作成する
  • 入れる:

    [Service]
    ExecStart=/path/to/your/Tomcat --and --parameters
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

systemctl enable custom-Tomcat.serviceを使用してサービスを有効にします。通常の起動ごとに開始されます。

もちろん、両方の初期化システムにはいくつかの設定オプションがあります。それらのドキュメントでそれらを確認できます。

19
zdzichu

Tomcatはかなり一般的なサービスです。すでにディストリビューションから提供されているinitスクリプトを確認することをお勧めします。ほとんどの場合、微調整なしで、カスタマイズされたバイナリで動作する可能性があります。

7
xenoterracide

コンピュータの起動後、ユーザーがログインする前にスクリプトを実行するだけの場合は、このタスクを正確に解決するためのスクリプト/etc/rc.localを編集するだけです。

6
fschmitt

cronデーモンがある場合、事前定義されたcron時間フックの1つは@rebootで、システムの起動時に自然に実行されます。 crontab -eを実行してcrontabファイルを編集し、行を追加します。

@reboot /your/command/here
6
Michael Mrozek

次のように、特定のユーザーの権限で実行できる、より洗練されたスクリプトを作成できます。

#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"

#Helper functions
start() {
        start-stop-daemon --start --quiet --background --make-pidfile \
                --pidfile /var/run/$NAME.pid --chuid $USERGROUP \
                --exec /usr/local/bin/myservice
}

stop() {
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
                --exec myservice --retry 30
}

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        stop
        echo "$NAME."
        ;;
  restart)
        echo -n "Restarting $DESC: "
        #set +e
        stop
        #set -e
        #sleep 1
        start

        echo "$NAME."
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart}" >&2
        exit 1
        ;;
esac

exit 0

スクリプトは/etc/init.d/myserviceにあり、次のコマンドを実行してサービスを開始します。

/etc/init.d/myservice start

Start-stop-daemonのmanページを読んで、その仕組みを理解してください。

3
Mr Ed

追加できるように、UbuntuまたはDebianで使用できます。

update-rc.d your_service defaults

削除する

update-rc.d -f your_service remove

バイバイ!\o

関数statusとforce-reloadを LSB-compilant に実装すると便利です

1
MaikoID