2013-02-17 106 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\" "