2013-02-17 4 views
9

ich Setup versucht, meine setenv.sh auf Ubuntu 12/Tomcat 7. Tomcat mit installiert wurde apt-get Ich habe versucht, ein mehrzeiliges JAVA_OPTS Variable zu erstellen, sondern läuft in Fehlermeldungen halten .mehrzeilige JAVA_OPTS in setenv.sh

#!/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. 

ich es so aktualisiert haben, aber nur die letzte Zeile an der Echo-Position angezeigt.

#!/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 

Wenn ich "jeden Befehl in einer eigenen Zeile" ohne die Export-Option versuchen, erhalte ich „nicht erkannte Option -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 
+0

Bitten Sie die {} Taste für Code - das es für Dich formatieren. –

+1

Könnten Sie bitte die ganze Zeile zeigen, die Sie in der Shell ausführen wollen, also 'java $ JAVA_OPTS ....' –

+0

Ich habe meine Antwort mit einer Version aktualisiert, die auf dem Vorschlag von bmargulies basiert. Es scheint jedoch, nur den letzten Aufruf von JAVA_OPTS festzulegen und die vorherigen Anweisungen nicht einzuschließen. – Marc

Antwort

14

Hmm, löschte die ganze Datei und neu erstellt, und jetzt funktioniert es ..... Jetzt mit diesem Stil

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" 
+0

Es ist extrem empfindlich auf den Standort der ". Wenn Tomcat 7 nicht mehr richtig startet. Es ist etwas zu tun, w w – Marc

7

Sie wäre besser weg mit:

JAVA_OPTS="$JAVA_OPTS -server " 
JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx512m" 
export JAVA_OPTS 
+0

Ich habe das versucht, aber wenn ich JAVA_OPTS am Ende echo, sehe ich nur-Mms512m-Xmx512m (anstelle von -server-XMs512m-Mmx512m) – Marc

+0

Wie kann das funktionieren? zweimal zuweisen und erwarten, eine Verkettung zu erhalten? – Dariusz

+0

Dies ist die Standardmethode für viele Eigenschaften - Sie sehen es oft in App-Servern und so weiter (Tomcat, Glassfish usw.). Dies wäre auch meine vorgeschlagene Antwort –

1

Wound up etwas ähnliches wie Marc verwenden, aber mit Fluchten für Räume in Eigenschaftsdefinitionen

export JAVA_OPTS="$JAVA_OPTS \ 
-DFOO=\"bar bar\" \ 
-DBAZ=\"bar2 bar2\" "