Sep 12 2010

Instalacja Sun (Oracle) Java w Lucid Lynx

Zawsze to zapominam ;)

Wiec, jezeli system jest czysty i nie sa jeszcze aktywne repozytoria partnerow, nalezy je wlaczyc w System->Administracja->Zrodla oprogramowania – zaznaczamy odpowiednie pola wyboru.
Zamykamy, przeladowujemy i instalujemy JDK znanym juz poleceniem

czlowiek@maszyna:~$ sudo apt-get update && sudo apt-get install sun-java6-jdk

Sep 15 2009

Java i niuchanie po systemie

Jak pobrac, naprzyklad, ilosc wolnej pamieci w systemie operacyjnym, na ktorym uruchomiona jest Javka, srednie wykorzystanie procesora lub jeszcze wolne miejsce na dysku. Mozna roznie, najczesciej korzysta sie ze skryptow, ale co z pure Java? I o tym wlasnie teraz a do pomocy mamy caly package java.lang.management i com.sun.management.
Dla nas najciekawszym bedzie OperatingSystemMXBean, interface umozliwiajacy pobranie info z systemu operacyjnego, na ktorym uruchomiona jest wirtualna maszyna Javy (JVM).

Info o systemie

OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
 
System.out.println("System: " + osmxb.getName() + " "
	+ osmxb.getVersion() + " (" + osmxb.getArch() + ")");
// System: Linux 2.6.28-15-generic (i386)

Fizyczna

System.out.println("RAM: "
	+ (osmxb.getFreePhysicalMemorySize() / 1024 / 1024) + "/"
	+ (osmxb.getTotalPhysicalMemorySize() / 1024 / 1024) + " MiB");
// RAM: 1454/3277 MiB

Swap

System.out.println("Swap: "
	+ (osmxb.getFreeSwapSpaceSize() / 1024 / 1024) + "/"
	+ (osmxb.getTotalSwapSpaceSize() / 1024 / 1024) + " MiB");
// Swap: 956/956 MiB

Srednie obciazenie

System.out.println("Load: " + osmxb.getSystemLoadAverage());
// Load: 1.41

No i CPU – tu trzeba troche pokombinowac :P

private static long lastSystemTime = System.nanoTime();
private static long lastProcessCpuTime = 0;
 
private double round(double value, int place) {
	BigDecimal bd = new BigDecimal(value);
	bd = bd.setScale(place, BigDecimal.ROUND_UP);
	return bd.doubleValue();
}
 
public synchronized double getCpuUsage() {
	long systemTime = System.nanoTime();
	long processCpuTime = osmxb.getProcessCpuTime();
 
	double cpuUsage = (double) (processCpuTime - lastProcessCpuTime)
		/ (systemTime - lastSystemTime);
 
	lastSystemTime = systemTime;
	lastProcessCpuTime = processCpuTime;
 
	return round(cpuUsage / osmxb.getAvailableProcessors(), 2);
}
 
System.out.println("CPU: " + getCpuUsage() + " %");
// CPU: 23.69 %

Wiecej informacji na temat uzytych tu pakietow, mozna uzyskac tutaj i tutaj.

Ups, no tak, a co z miejscem na dyskach?

File path = new File("/");
System.out.println("/: " + (path.getFreeSpace() / 1024 / 1024) + "/" + (path.getTotalSpace() / 1024 / 1024) + " MiB");
// /: 20248/28158 MiB
path = new File("/var");
System.out.println("/var: " + (path.getFreeSpace() / 1024 / 1024) + "/" + (path.getTotalSpace() / 1024 / 1024) + " MiB");
// /var: 7174/9852 MiB
path = new File("/home");
System.out.println("/home: " + (path.getFreeSpace() / 1024 / 1024) + "/" + (path.getTotalSpace() / 1024 / 1024) + " MiB");
// /home: 20183/56325 MiB

Jezeli /var i /home sa w roocie to dostaniemy wartosci z roota. W windowsie jest podobnie, z ta roznica, ze dyski identyfikujemy jako c:/, d:/.