linux監控java
Ⅰ java如何實現linux下實時監控文件是否有變化 / 藍訊
File file = new File("path");//所屬文件夾的路徑 if(file.isDirectory()){ File[] files = file.listFiles(); if(files.length > 0){ System.out.println("有文件"); } else { System.out.println("空文件夾,沒有文件"); } }
Ⅱ 如何查看linux上java實例消耗內存
mpstat
-P
ALL
和
sar
-P
ALL
說明:sar
-P
ALL
>
aaa.txt
重定向輸出內容到文件
aaa.txt
top命令經常用來監控linux的系統狀況,比如cpu、內存的使用,程序員基本都知道這個命令,但比較奇怪的是能用好它的人卻很少,例如top監控視圖中內存數值的含義就有不少的曲解.下面幾種方法都可以插件Java實例消耗的內存.
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器
內容解釋:
PID:進程的ID
USER:進程所有者
PR:進程的優先順序別,越小越優先被執行
NInice:值
VIRT:進程佔用的虛擬內存
RES:進程佔用的物理內存
SHR:進程使用的共享內存
S:進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值為負數
%CPU:進程佔用CPU的使用率
%MEM:進程使用的物理內存和總內存的百分比
TIME+:該進程啟動後佔用的總的CPU時間,即佔用CPU使用時間的累加值。
COMMAND:進程啟動命令名稱
常用的命令:
P:按%CPU使用率排行
T:按MITE+排行
M:按%MEM排行
2、便捷的進程內存查看:/proc/pid
,不過比較難理解
測量一個進程佔用了多少內存,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的信息
說明:
/proc/N
pid為N的進程信息
/proc/N/cmdline
進程啟動命令
/proc/N/cwd
鏈接到進程當前工作目錄
/proc/N/environ
進程環境變數列表
/proc/N/exe
鏈接到進程的執行命令文件
/proc/N/fd
包含進程相關的所有的文件描述符
/proc/N/maps
與進程相關的內存映射信息
/proc/N/mem
指代進程持有的內存,不可讀
/proc/N/root
鏈接到進程的根目錄
/proc/N/stat
進程的狀態
/proc/N/statm
進程使用的內存的狀態
/proc/N/status
進程狀態信息,比stat/statm更具可讀性
/proc/self
鏈接到當前正在運行的進程
3、可以看到進程中每個資源都佔用了多少內存:pmap
pmap命令可以顯示一個或多個進程所使用的內存數量。你可以使用這個工具來了解伺服器上的某個進程分配了多少內存,並以此來判斷這是否是導致內存瓶頸的原因。要得到更加詳細的信息,使用pmap
-d選項。
4、free
free:
invalid
option
--
h
usage:
free
[-b|-k|-m|-g]
[-l]
[-o]
[-t]
[-s
delay]
[-c
count]
[-V]
-b,-k,-m,-g
show
output
in
bytes,
KB,
MB,
or
GB
-l
show
detailed
low
and
high
memory
statistics
-o
use
old
format
(no
-/+buffers/cache
line)
-t
display
total
for
RAM
+
swap
-s
update
every
[delay]
seconds
-c
update
[count]
times
-V
display
version
information
and
exit
Ⅲ Java如何監控Linux系統。
啥叫監控linux系統?
寫java程序執行linux命令?
try {
String command = "ping localhost";
Process ps = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(ps
.getInputStream()));
String line;
System.out.println("------------------------");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
System.out.println("------------------------");
} catch (Exception e) {
e.printStackTrace();
}
執行結果:
------------------------
Pinging xxx [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
------------------------
修改對應的command就應該可以了 不知道你是不是這個需求?
Ⅳ java如何在linux下監聽某個目錄下是否有文件改變
JDK 7 的nio2 WatchService可以監聽文件系統。
Oracle官方教程鏈接 http://docs.oracle.com/javase/tutorial/essential/io/notification.html
樣例代碼:
importstaticjava.nio.file.StandardWatchEventKinds.*;
Pathpath=Paths.get("/home");
WatchServicewatchService=FileSystems.getDefault().newWatchService();
WatchKeywatchKey=path.register(watchService,ENTRY_CREATE,ENTRY_DELETE,ENTRY_MODIFY);
/*
privatebooleannotDone=true;
while(notDone){
try{
WatchKeywatchKey=watchService.poll(60,TimeUnit.SECONDS);
List<WatchEvent.Kind<?>>events=watchKey.pollEvents();
for(WatchEventevent:events){
//.register
PathwatchedPath=(Path)watchKey.watchable();
//returnstheeventtype
=event.kind();
//returnsthecontextoftheevent
Pathtarget=(Path)event.context();
}
if(!watchKey.reset()){
...handlesituationnolongervalid
}
}catch(InterruptedExceptione){
Thread.currentThread().interrupt();
}
}
*/
Ⅳ 如何用java實現遠程監控linux伺服器磁碟io
對於遠程監控Linux主機系統CPU,內存使用情況,以前也使用了top等命令,但是最後還是覺得使用vmstat比較好.
運行top命令獲得系統CPU使用情況有兩個缺點,
第一運行top命令,執行的shell語句相對復雜.
用top命令獲得CPU使用情況的shell語句
top -b -n 2 | grep Cpu |sed 1d | awk '{print $5}' | cut -f 1 -d "."
第二:有時候系統峰值時間很短暫,容易造成誤判.
注意:運行本例子,你還需要下載第三方ganymed-ssh2-build251beta1.jar,改軟體主要用於通過ssh遠程登錄被監控主機.
ITjob上。看。的
Ⅵ 怎麼用JAVA實現監控LINUX下CPU的使用率 windows下怎麼查看呢用什麼方法 請高手指教,謝謝!
用java的話,有兩個方法:
1.利用java直接調用shell命令查看cpu的參數(系統不同命令也不同)
類似代碼:
可以查考http://aimer311.javaeye.com/blog/347908
2.利用軟體linux下可以安裝net-snmp實現遠程和本地監控
具體方法的話比較負責你網上查查
因為不知道你的linux到底是什麼系統所有我沒法給你寫命令
Ⅶ Linux系統監控命令及如何定位到Java線程
CPU資源時,按照以下步驟進行查找:
(一):通過【 top -p 12377 -H】 查看java進程的有哪些線程的運行情況;
和通過【jstack 12377 > stack.log】生成Java線程的mp詳細信息;
先用top命令找出佔用資源厲害的java進程id,如圖:# top
如上圖所示,java的進程id為』52554′,接下來用top命令單獨對這個進程中的所有線程作監視:
1 top -p 52554 -H
# top視圖裡面裡面可以通過快捷鍵依次b ,x高亮顯示top的列找出需要的線程,默認CPU排序,Sh
Ⅷ java如何實現linux下實時監控文件是否有變化
java 的WatchService 類提供了一種方式可以檢查
try
{
WatchService watchService = FileSystems.getDefault()
.newWatchService();
Path path = Paths.get(pathName);
// 注冊監聽器
path.register(watchService,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE);
while (true)
{
// 阻塞方式,消費文件更改事件
List<WatchEvent<?>> watchEvents = watchService.take()
.pollEvents();
for (WatchEvent<?> watchEvent : watchEvents)
{
System.out.printf("[%s]文件發生了[%s]事件。%n", watchEvent
.context(), watchEvent.kind());
}
}
}
catch (Exception e)
{
}
Ⅸ java 怎麼監控linux上線程是否存在
CPU資源時,按照以下步驟進行查找:
(一):通過【 top -p 12377 -H】 查看java進程的有哪些線程的運行情況;
和通過【jstack 12377 > stack.log】生成Java線程的mp詳細信息;
先用top命令找出佔用資源厲害的java進程id,如圖:# top
如上圖所示,java的進程id為』52554′,接下來用top命令單獨對這個進程中的所有線程作監視:
1 top -p 52554 -H
# top視圖裡面裡面可以通過快捷鍵依次b ,x高亮顯示top的列找出需要的線程,默認CPU排序,Sh
Ⅹ 在linux裡面怎麼監控一個java程序的運行
可以寫一個腳本進行監控
可以用 ps top jstack 等命令來查看和監控進程。
參考1
參考2
我是海騰數據中心的技術小哥,很高興為您解答問題。