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))