Ubuntu 12/Tomcat 7にsetenv.sh
をセットアップしようとしています。Tomcatはapt-getでインストールされています。複数行のJava_OPTS
変数を作成しようとしましたが、エラーメッセージが表示され続けます。
#!/bin/sh
export Java_OPTS="$Java_OPTS -server \
-Xms512m -Xmx512m"
: not foundtomcat7/bin/catalina.sh: 4: /usr/share/Tomcat7/bin/setenv.sh:
Using CATALINA_BASE: /usr/share/Tomcat7
Using CATALINA_HOME: /usr/share/Tomcat7
Using CATALINA_TMPDIR: /usr/share/Tomcat7/temp
Using JRE_HOME: /usr/lib/jvm/Java-7-Oracle/
Using CLASSPATH: /usr/share/Tomcat7/bin/bootstrap.jar:/usr/share/Tomcat7/bin/Tomcat-juli.jar
Error: Could not find or load main class
#!/bin/sh
export Java_OPTS="$Java_OPTS -server -Xms512m -Xmx512m"
: not foundtomcat7/bin/catalina.sh: 3: /usr/share/Tomcat7/bin/setenv.sh:
Using CATALINA_BASE: /usr/share/Tomcat7
Using CATALINA_HOME: /usr/share/Tomcat7
Using CATALINA_TMPDIR: /usr/share/Tomcat7/temp
Using JRE_HOME: /usr/lib/jvm/Java-7-Oracle/
Using CLASSPATH: /usr/share/Tomcat7/bin/bootstrap.jar:/usr/share/Tomcat7/bin/Tomcat-juli.jar
Invalid maximum heap size: -Xmx512m
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
これを更新しましたが、エコーの場所では最後の行だけが表示されます。
#!/bin/sh
Java_OPTS="$Java_OPTS -server -Xms704m -Xmx704m"
Java_OPTS="$Java_OPTS -XX:OnOutOfMemoryError=/usr/share/scripts/on_server_crash.sh"
Java_OPTS="$Java_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/Tomcat7"
Java_OPTS="$Java_OPTS -XX:MaxPermSize=128m -XX:MaxNewSize=256m -XX:NewSize=256m"
echo $Java_OPTS
Java_OPTS="$Java_OPTS -XX:SurvivorRatio=12 -XX:MaxTenuringThreshold=0"
Java_OPTS="$Java_OPTS -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
Java_OPTS="$Java_OPTS -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled"
Java_OPTS="$Java_OPTS -XX:+CMSPermGenSweepingEnabled -XX:+DisableExplicitGC"
Java_OPTS="$Java_OPTS -XX:+UseParNewGC -XX:+UseTLAB"
Java_OPTS="$Java_OPTS -Djava.awt.headless=true"
Java_OPTS="$Java_OPTS -javaagent:$NR_JAR -Dnewrelic.environment=production"
echo $Java_OPTS
export Java_OPTS
エクスポートオプションなしで「各コマンドを独自の行で」実行しようとすると、「認識できないオプション-server」が表示されます。
#!/bin/sh
Java_OPTS="$Java_OPTS -server"
Java_OPTS="$Java_OPTS -Xms704m"
Java_OPTS="$Java_OPTS -Xmx704m"
Java_OPTS="$Java_OPTS -XX:OnOutOfMemoryError=/usr/share/scripts/on_server_crash.sh"
Java_OPTS="$Java_OPTS -XX:+HeapDumpOnOutOfMemoryError"
Java_OPTS="$Java_OPTS -XX:HeapDumpPath=/var/log/Tomcat7"
Java_OPTS="$Java_OPTS -XX:MaxPermSize=128m"
Java_OPTS="$Java_OPTS -XX:MaxNewSize=256m"
Java_OPTS="$Java_OPTS -XX:NewSize=256m"
Java_OPTS="$Java_OPTS -XX:SurvivorRatio=12"
Java_OPTS="$Java_OPTS -XX:MaxTenuringThreshold=0"
Java_OPTS="$Java_OPTS -XX:+UseConcMarkSweepGC"
Java_OPTS="$Java_OPTS -XX:+CMSIncrementalMode"
Java_OPTS="$Java_OPTS -XX:+CMSIncrementalPacing"
Java_OPTS="$Java_OPTS -XX:+CMSClassUnloadingEnabled"
Java_OPTS="$Java_OPTS -XX:+CMSPermGenSweepingEnabled"
Java_OPTS="$Java_OPTS -XX:+DisableExplicitGC"
Java_OPTS="$Java_OPTS -XX:+UseParNewGC"
Java_OPTS="$Java_OPTS -XX:+UseTLAB"
Java_OPTS="$Java_OPTS -Djava.awt.headless=true"
Java_OPTS="$Java_OPTS -javaagent:$NR_JAR"
Java_OPTS="$Java_OPTS -Dnewrelic.environment=production"
echo Java_OPTS
うーん、ファイル全体を削除して再作成しましたが、今では機能します。
export Java_OPTS="$Java_OPTS\
-server\
-Xms704m\
-Xmx704m\
-XX:OnOutOfMemoryError=/usr/share/scripts/on_server_crash.sh\
-XX:+HeapDumpOnOutOfMemoryError\
-XX:HeapDumpPath=/var/log/Tomcat7\
-XX:MaxPermSize=128m\
-XX:MaxNewSize=256m\
-XX:NewSize=256m\
-XX:SurvivorRatio=12\
-XX:MaxTenuringThreshold=0\
-XX:+UseConcMarkSweepGC\
-XX:+CMSIncrementalMode\
-XX:+CMSIncrementalPacing\
-XX:+CMSClassUnloadingEnabled\
-XX:+CMSPermGenSweepingEnabled\
-XX:+DisableExplicitGC\
-XX:+UseParNewGC\
-XX:+UseTLAB\
-Djava.awt.headless=true\
-javaagent:$NR_JAR\
-Dnewrelic. environment=production"
あなたはより良いものになるでしょう:
Java_OPTS="$Java_OPTS -server "
Java_OPTS="$Java_OPTS -Xms512m -Xmx512m"
export Java_OPTS
Marcに似たものを使用して巻き上げますが、プロパティ定義のスペースをエスケープします
export Java_OPTS="$Java_OPTS \
-DFOO=\"bar bar\" \
-DBAZ=\"bar2 bar2\" "