2013-02-17 21 views
9

sto cercando di impostare il mio setenv.sh su Ubuntu 12/Tomcat 7. Tomcat è stato installato con apt-get Ho cercato di creare una multilinea JAVA_OPTS variabile, ma continuare a correre in messaggi di errore .multilinea 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. 

Ho aggiornato a questa, ma nella posizione eco viene visualizzata solo l'ultima riga.

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

Quando provo "ogni comando su una riga" senza l'opzione di esportazione, ottengo "l'opzione non riconosciuta -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

prego voi il tasto {} per il codice - questo sarà formattarlo per voi. –

+1

Potresti mostrare l'intera linea che stai cercando di eseguire sulla shell, ad esempio 'java $ JAVA_OPTS ....' –

+0

Ho aggiornato la mia risposta con una versione basata sul suggerimento di bmargulies. Tuttavia, sembra impostare solo l'ultima chiamata su JAVA_OPTS e non includere le dichiarazioni precedenti. – Marc

risposta

14

Hmm, eliminato l'intero file e ricreato, e ora funziona ..... ora, usando questo stile

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

È estremamente sensibile alla posizione di ". Se tomcat 7 non si avvia più correttamente, è probabile che qualcosa – Marc

7

Faresti meglio con:

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

L'ho provato, ma se faccio eco a JAVA_OPTS alla fine, vedo solo -Mms512m -Xmx512m (al posto di -server - XMs512m -Mmx512m) – Marc

+0

Come può funzionare? assegnare due volte e aspettarsi di ottenere la concatenazione? – Dariusz

+0

Questo è il modo standard per impostare molte proprietà - lo vedrete spesso nei server delle app e così via (tomcat, glassfish ecc.). Questa sarebbe stata anche la mia risposta suggerita –

1

liquidata con qualcosa di simile a Marc, ma con fughe per gli spazi in definizioni di proprietà

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