8

私はJavaアプリケーションを持っています。それを起動するために使用します

java -jar myapp.jar

停止するには、CTRL + C を使用します。

次に、そのアプリケーションを開始できるものに変換する必要があります。

/etc/init.d/myapp スタート

そして、私はやめることができます:

/etc/init.d/myapp停止

問題は、プロセスの PID を保存することです。これを行うためのレシピをどこかで見たと思いますが、場所を覚えておらず、見つけることができません。

Java Server Wrapperというプロジェクトがあるのを見ましたが、メモリ使用量を制限しない無料のものを探しています。そして、この作業は 1 つの bash スクリプトで実行できると思います。

4

2 に答える 2

11

Apache Commons Daemonを見てください。

Java ベースのデーモン (サービス) の開始と停止をサポートする「jsvc」ランチャーがあります。

于 2009-01-02T15:18:22.443 に答える
8

まず、PID を *nix に保存します。

$ ./yourprogram &
$ echo $! > /var/run/yourpid

yourpid には yourpgram の PID が含まれるようになり、/var/run が適切な場所になります。

上記は「開始」スクリプトに入れることができます。「停止」スクリプトは、何を殺すかを知るために yourpid を調べることができます。

より洗練された方法でアプリを適切に停止したい場合は、Tomcat の org.apache.catalina.startup.Catalina.java のソース コードを参照して、適切なシャットダウン フックを実装する方法を確認してください。

次に、上記の「停止」および「開始」スクリプトを /etc/init.d/mystopstartscript に配置できます。

#!/bin/bash
# processname: yourprogram
# pidfile: /var/run/yourpid

case $1 in
start)
        sh /some/where/start.sh
        ;;
stop)  
        sh /some/where/stop.sh
        ;;
restart)
        sh /some/where/stop.sh
        sh /some/where/start.sh
        ;;
esac   
exit 0

これはかなり自家製のソリューションであり、ほとんどのアイデアは古き良き Tomcat から取り入れられていますが、お役に立てば幸いです :)

于 2009-01-05T02:56:12.877 に答える