2013-02-17 86 views
9

我想設置我的setenv.sh在Ubuntu 12/Tomcat的7 的Tomcat已經安裝了apt-get的 我試圖創建多JAVA_OPTS變量,但繼續運行到錯誤信息。多行JAVA_OPTS在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. 

我也更新到這一點,但在回聲定位只顯示最後一行。

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

請您在{}按鈕代碼 - 這將格式化爲您服務。 – 2013-02-17 21:32:56

+1

能否請您在shell中顯示您想要執行的整行,即'java $ JAVA_OPTS ....' – 2013-02-17 21:32:59

+0

我已經用基於bmargulies的建議的版本更新了我的答案。但是,它似乎只將最後一次調用設置爲JAVA_OPTS,而不包括前面的語句。 – Marc 2013-02-18 10:20:59

回答

14

嗯,刪除整個文件,並重新創建它,現在它的作品..... 現在使用這種風格

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

它對「。」的位置非常敏感。如果tomcat 7不能正確啓動,那麼可能會出現一些問題 – Marc 2015-05-27 13:30:36

7

你會用更好識別的選項:

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

我試過,但如果我在最後回顯JAVA_OPTS,我只看到-Mms512m -Xmx512m(而不是-server - XMs512m -Mmx512m) – Marc 2013-02-18 03:34:51

+0

這怎麼能工作?分配兩次,並期望獲得串聯? – Dariusz 2013-02-18 10:49:52

+0

這是設置許多屬性的標準方式 - 您經常會在應用程序服務器等中看到它(tomcat,glassfish等)。這也是我的建議答案 – 2013-02-18 11:33:09

1

彼時使用類似馬克的東西,但對於逃逸的空間屬性定義

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