提交 ce1d8259 编写于 作者: R Ray

增加ctl -gc

上级 aa0ec5c1
#!/bin/bash
# Copyright (c) http://www.o2oa.net/
current_dir="$(cd "$(dirname "$0")"; pwd)"
if [ -d ${current_dir}/local/update ]
then
for D in commons configSample localSample jvm servers store config local
do
if [ ! -d ${current_dir}/$D ]
then
mkdir ${current_dir}/commons
fi
done
if [ -f ${current_dir}/local/update/o2server/version.o2 ]
then
echo 'update o2server.'
for D in commons configSample localSample jvm servers store
do
if [ -d ${current_dir}/local/update/o2server/$D ]
then
echo "update ${current_dir}/$D."
cp -Rf -p ${current_dir}/local/update/o2server/$D ${current_dir}/
fi
done
for F in console.jar index.html src.zip
do
if [ -f ${current_dir}/local/update/o2server/$F ]
then
echo "update ${current_dir}/$F."
cp -f -p ${current_dir}/local/update/o2server/$F ${current_dir}/
fi
done
for A in "start" "stop" "restart" "console" "service"
do
for B in "_windows.bat" "_linux.sh" "_macos.sh" "_arm.sh" "_mips.sh" "_raspi.sh" "_aix.sh"
do
if [ -f ${current_dir}/local/update/o2server/$A$B ]; then
echo "update ${current_dir}/$A$B."
cp -f -p ${current_dir}/local/update/o2server/$A$B ${current_dir}/
fi
done
done
echo "update ${current_dir}/version.o2."
cp ${current_dir}/local/update/o2server/version.o2 ${current_dir}/
echo "clean local/update directory."
rm -Rf ${current_dir}/local/update
echo "the update is complete, please restart the server."
exit 1
fi
fi
setsid ${current_dir}/jvm/linux_java11/bin/java -Dnashorn.args=--no-deprecation-warning --add-exports jdk.scripting.nashorn/jdk.nashorn.internal.runtime=ALL-UNNAMED --add-exports jdk.scripting.nashorn/jdk.nashorn.internal.runtime.arrays=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED -javaagent:${current_dir}/console.jar -server -Djava.awt.headless=true -XX:MaxHeapFreeRatio=40 -Xms512m -Duser.timezone=GMT+08 -XX:+HeapDumpOnOutOfMemoryError -jar ${current_dir}/console.jar
......@@ -42,6 +42,7 @@ public class ActionControl extends ActionBase {
private static final String CMD_SC = "sc";
private static final String CMD_EN = "en";
private static final String CMD_DE = "de";
private static final String CMD_GC = "gc";
private static final int REPEAT_MAX = 100;
private static final int REPEAT_MIN = 1;
......@@ -64,12 +65,8 @@ public class ActionControl extends ActionBase {
ec(cmd);
} else if (cmd.hasOption(CMD_DD)) {
dd(cmd);
// } else if (cmd.hasOption(CMD_DS)) {
// ds(cmd);
} else if (cmd.hasOption(CMD_RD)) {
rd(cmd);
// } else if (cmd.hasOption(CMD_RS)) {
// rs(cmd);
} else if (cmd.hasOption(CMD_CLH2)) {
clh2(cmd);
} else if (cmd.hasOption(CMD_UF)) {
......@@ -84,6 +81,8 @@ public class ActionControl extends ActionBase {
en(cmd);
} else if (cmd.hasOption(CMD_DE)) {
de(cmd);
} else if (cmd.hasOption(CMD_GC)) {
gc();
} else {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("control command", displayOptions());
......@@ -110,6 +109,7 @@ public class ActionControl extends ActionBase {
options.addOption(scOption());
options.addOption(enOption());
options.addOption(deOption());
options.addOption(gcOption());
return options;
}
......@@ -129,6 +129,7 @@ public class ActionControl extends ActionBase {
displayOptions.addOption(rstOption());
displayOptions.addOption(scOption());
displayOptions.addOption(enOption());
displayOptions.addOption(gcOption());
return displayOptions;
}
......@@ -202,6 +203,10 @@ public class ActionControl extends ActionBase {
.desc("密码文本解密.").hasArg().build();
}
private static Option gcOption() {
return Option.builder(CMD_GC).longOpt("jvm garbage collection").hasArg(false).desc("垃圾收集.").build();
}
private void ec(CommandLine cmd) throws Exception {
if (BooleanUtils.isNotTrue(Config.currentNode().getEraseContentEnable())) {
logger.print("erase content is disabled.");
......@@ -323,6 +328,11 @@ public class ActionControl extends ActionBase {
en.execute(text);
}
private void gc() {
GarbageCollection garbageCollection = new GarbageCollection();
garbageCollection.execute();
}
private Integer getArgInteger(CommandLine cmd, String opt, Integer defaultValue) {
Integer repeat = defaultValue;
String r = cmd.getOptionValue(opt);
......
package com.x.server.console.action;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
public class GarbageCollection {
private static final Logger LOGGER = LoggerFactory.getLogger(GarbageCollection.class);
public boolean execute() {
Runtime.getRuntime().gc();
return true;
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册