115 lines
4.0 KiB
Java
115 lines
4.0 KiB
Java
package pw.kaboom.extras.commands;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.InputStreamReader;
|
|
|
|
import java.lang.management.ManagementFactory;
|
|
import java.net.InetAddress;
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandExecutor;
|
|
import org.bukkit.command.CommandSender;
|
|
|
|
public final class CommandServerInfo implements CommandExecutor {
|
|
private void sendInfoMessage(final CommandSender target, final String description,
|
|
final String value) {
|
|
target.sendMessage(
|
|
ChatColor.GRAY + description + ": "
|
|
+ ChatColor.WHITE + value
|
|
);
|
|
}
|
|
|
|
public boolean onCommand(final CommandSender sender, final Command command, final String label,
|
|
final String[] args) {
|
|
try {
|
|
sendInfoMessage(sender, "Hostname",
|
|
InetAddress.getLocalHost().getHostName()
|
|
);
|
|
sendInfoMessage(sender, "IP address",
|
|
InetAddress.getLocalHost().getHostAddress()
|
|
);
|
|
} catch (Exception ignored) {
|
|
}
|
|
|
|
sendInfoMessage(sender, "OS name",
|
|
ManagementFactory.getOperatingSystemMXBean().getName()
|
|
);
|
|
sendInfoMessage(sender, "OS architecture",
|
|
ManagementFactory.getOperatingSystemMXBean().getArch()
|
|
);
|
|
sendInfoMessage(sender, "OS version",
|
|
ManagementFactory.getOperatingSystemMXBean().getVersion()
|
|
);
|
|
sendInfoMessage(sender, "Java VM",
|
|
ManagementFactory.getRuntimeMXBean().getVmName()
|
|
);
|
|
sendInfoMessage(sender, "Java version",
|
|
ManagementFactory.getRuntimeMXBean().getSpecVersion()
|
|
+ " "
|
|
+ ManagementFactory.getRuntimeMXBean().getVmVersion()
|
|
);
|
|
|
|
try {
|
|
final String[] shCommand = {
|
|
"/bin/sh",
|
|
"-c",
|
|
"cat /proc/cpuinfo | grep 'model name' | cut -f 2 -d ':' | awk '{$1=$1}1' | head -1"
|
|
};
|
|
|
|
final Process process = Runtime.getRuntime().exec(shCommand);
|
|
final InputStreamReader isr = new InputStreamReader(process.getInputStream());
|
|
final BufferedReader br = new BufferedReader(isr);
|
|
String line;
|
|
|
|
while ((line = br.readLine()) != null) {
|
|
sendInfoMessage(sender, "CPU model",
|
|
line
|
|
);
|
|
}
|
|
|
|
br.close();
|
|
} catch (Exception ignored) {
|
|
}
|
|
|
|
sendInfoMessage(sender, "CPU cores",
|
|
String.valueOf(Runtime.getRuntime().availableProcessors())
|
|
);
|
|
sendInfoMessage(sender, "CPU load",
|
|
String.valueOf(ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage())
|
|
);
|
|
|
|
final long heapUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
|
|
final long nonHeapUsage = ManagementFactory.getMemoryMXBean()
|
|
.getNonHeapMemoryUsage().getUsed();
|
|
final long memoryMax = (
|
|
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax()
|
|
+ ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage().getMax()
|
|
);
|
|
final long memoryUsage = (heapUsage + nonHeapUsage);
|
|
|
|
sendInfoMessage(sender, "Available memory",
|
|
(memoryMax / 1024 / 1024) + " MB"
|
|
);
|
|
sendInfoMessage(sender, "Heap memory usage",
|
|
(heapUsage / 1024 / 1024) + " MB"
|
|
);
|
|
sendInfoMessage(sender, "Non-heap memory usage",
|
|
(nonHeapUsage / 1024 / 1024) + " MB"
|
|
);
|
|
sendInfoMessage(sender, "Total memory usage",
|
|
(memoryUsage / 1024 / 1024) + " MB"
|
|
);
|
|
|
|
final long minutes = (ManagementFactory.getRuntimeMXBean().getUptime() / 1000) / 60;
|
|
final long seconds = (ManagementFactory.getRuntimeMXBean().getUptime() / 1000) % 60;
|
|
|
|
sendInfoMessage(sender, "Server uptime",
|
|
minutes + " minute(s) "
|
|
+ seconds + " second(s)"
|
|
);
|
|
return true;
|
|
}
|
|
}
|