0

Apache Tomcat サービスの LSB 準拠の init スクリプトとして機能する小さな python スクリプトを作成しました。このスクリプトと初期テストは、openSUSE を実行している仕事用のラップトップで実行しました。実際の展開は Ubuntu Server で行われる予定です (冗談ではありませんが、私も悲しくなります)。

スクリプトは openSUSE (python 2.7.3) では完全に動作しますが、Ubuntu では動作が異なります (これも python 2.7.3)...

subprocess.Popen 呼び出しを実行すると、openSUSE でプロセスが開かれ、.pid が「制御」ファイルにキャプチャされます...

Ubuntu では、まったく同じスクリプトである subprocess.Popen 呼び出しが 2 つのプロセスを開きます。1 つは '/usr/bin -c java (...)' で始まり、もう 1 つは 'java (...)' です。これは、書き込まれた PID が /bin/sh のものであるため、本当に面倒です...

Ubuntu Server を使用するのはこれが初めてで、すでにすべてを RHEL に移行することを計画していますが (このナンセンスも発生しません)、Ubuntu でこれが発生する理由と、周りを避けて…

起動機能はこれ

def start():
    set_user()
    with open(CATALINA_OUT, "a") as log:
        tomcat = subprocess.Popen(TOMCAT_CMD + 'start', shell=True, stdout=log, stderr=log)
    write_pidfile(tomcat.pid)

def set_user():
    os.setgid(int(TOMCAT_GID))
    os.setuid(int(TOMCAT_UID))
4

1 に答える 1

1

基本TOMCAT_CMD的に、ほとんどのプラットフォームでは Java (の一部のバリアント) であるjava -whatever可能性が高いと思われますが、Ubuntu で Debian Java ポリシーの詳細を実装するシェル スクリプトは、システムの優先 Java バイナリを正しいパラメーターで :ing する前に実行されます。価値のあることとしては、後者は一般的に良いことです。なぜなら、ある Java 実装から別の Java 実装に切り替えるのがはるかに簡単になるからです。 /または完全に Debian に準拠したいがシェル スクリプトを使用できない場合は、Python でポリシーを再実装します)。/usr/bin/javaexecTOMCAT_CMD

于 2013-04-27T17:28:27.527 に答える