⑴ linux查看日誌文件寫入速度的4種方法
有時,我們需要查看某個文件的增長速度,如日誌文件,以此來感受系統的彎局缺負載情況,因為一般情況下,日誌寫入越快,說明系統負載越重。
本文就來介紹下Linux中查看日誌臘拿增長速度的幾種方法,如下:
首先要介紹的是dd,因為dd命令幾乎所有主流發行版都自帶,無需額外安裝,如下:
如上,使用 tail -F 獲取新寫入的數據,然後用管道將數據交給dd,dd將數據拷貝到 /dev/null ,其中 status=progress 是用來顯示拷貝速度的,可見,我們日誌的寫入速度是 471 kB/s 。
pv命令可以看做是帶進度的cp,如下:
原理與dd類似,不過命令換成了pv。
由於日誌數據都是程序(如java)寫入的,而在如下的偽文件中,存放著程序打開的文件信息,如下:
於是定期的讀取這個offset就可以知道文件的寫入速度了,這也是cv命令的實現原理,如下:
通過寫一個小腳本,定期觀察文件大小,也可查看文件寫埋辯入速度,如下:
通過watch再加上觀察,也能大致看出速度,如下:
其實轉念一想,如果我們在某個函數中打上日誌,然後通過grep過濾出此日誌,然後我們只要計算每秒輸出的日誌行數,這豈不就是函數執行的QPS了!
這里可以通過 151/15 計算出QPS是10,由於沒有超過1000,所以看到的是0.0kB/s,如果使用pv命令,會更簡單一些,如下:
⑵ linux下jar包啟動命令,我用nohup java -jar + *.jar命令啟動,此時命令
啟動並數據出日誌到nohub.out : nohup java -jar xxx.jar nohub.out &
查看正在執行的任務:jobs
查看日誌 tail -f /xxx/xxx/nohup.out
查看正在執行的java進程 : ps -ef|grep java
kill -9 123
⑶ linux下java mp文件在哪兒
如果所使用的應用伺服器是tomact,mp文件默認在catalina.out日誌文件里;
如果不是則可以查看java環境變數設置的位置,也就知道在mp文件的位置了;
如果沒有生成mp文件或者是生成錯誤,請按照一下幾種方法來修復:
系統默認的core文件生成路徑是 /var/logs,但是 /var/logs 目錄並非系統自帶的,系統初始安裝默認自帶的是/var/log,最終導致該系統出現core mp後並沒能生成core文件,因此如何查詢和修改系統默認的core mp文件生產路徑呢?方法如下:
一. 查詢core mp文件路徑:
方法1:
# cat /proc/sys/kernel/core_pattern
方法2:
# /sbin/sysctl kernel.core_pattern
二. 修改core mp文件路徑:
方法1:臨時修改:修改/proc/sys/kernel/core_pattern文件,但/proc目錄本身是動態載入的,每次系統重啟都會重新載入,因此這種方法只能作為臨時修改。
/proc/sys/kernel/core_pattern
例:echo 『/var/log/%e.core.%p』 > /proc/sys/kernel/core_pattern
方法2:永久修改:使用sysctl -w name=value命令。
例:/sbin/sysctl -w kernel.core_pattern=/var/log/%e.core.%p
⑷ 定期清理linux伺服器日誌文件的幾個思路
定期清理linux伺服器日誌文件的幾個思路
1,在跑批程序中,用java代碼調用shell腳本;
2,在跑批程序中,用純java代碼實現,也就是使用java的文件操作類File;
3,純shell腳本方式,使用linux伺服器的調度程序調用shell腳本;
結合最近的項目,這里提供一個示例。首先,我們是在跑批項目中實現的定期清理日誌功能,
因為我們有跑批項目,使用的是Control M進行調度,所以這種方式還是很方便的。
第一步:寫shell腳本
find /home/logs/ -mtime +30 -name "*.log" -exec rm -rf {} ;
腳本其實很簡單,一行代碼就夠了,把這個代碼放在一個shell文件中,然後放在伺服器的
指定目錄下,等待java程序調用。
第二步:寫java代碼,調用shell腳本,示例代碼僅提供思路,請大家自己調試
// 設置可執行許可權
String commond = "chmod 777 clearLogFileOnTime.sh";
Process proc = Runtime.getRuntime().exec(commond);
proc.waitFor();
// 執行shell腳本
commond = "bash clearLogFileOnTime.sh";
proc = Runtime.getRuntime().exec(commond);
第三步:配置Control M,進行作業調度
關於Control M的配置不再贅述,主要就是設置跑批程序的執行時間,以及一些其他參數。