這個指令碼主要的目的是監控機器上cpu和記憶體的使用情況,如果超過一定的閾值,列印出占用cpu或者記憶體資源較多的程序資訊,也可以替換成其它方式。
主要功能如下:
1)將記憶體和cpu資源的監控情況記錄到日誌檔案中
2)控制日誌檔案大小,週期性檢查(30天)日誌檔案大小,當日誌檔案超過一定程度之後自動進行清理日誌檔案。
#! /bin/bash
# this scripts is used to check host status(including memory cpu and so on)
# 20171024 -- first version
log_file="/tmp/monitor_log"
check_interval=10
max_usage_ration_memory=80
max_usage_ration_cpu=90
top_process_number=5
function check_log_size() ')
echo "current log file size : $file_size"
if [[ "$file_size" -gt 1048576 ]]
then
echo "clean old records as log file($1) is too big $(date)" 2>&1 | tee "$1"
fifi
}function disply_top_memory_process_information()
function monitor_memory() ' )
memory_free=$(grep memfree /proc/meminfo | awk '' )
memory_usage=$((100-memory_free*100/memory_total))
echo "current memory usage: $memory_usage at $(date)" 2>&1 | tee -a "$1"
if [[ "$memory_usage" -gt "$max_usage_ration_memory" ]]
then
echo "current memory usage is too high "
disply_top_memory_process_information "$1"
return 1
else
return 0fi}
function disply_top_cpu_process_information()
function get_cpu_info() end '
}function monitor_cpu() ')
echo "current cpu usage: $cpu_usage at $(date)" 2>&1 | tee -a "$1"
if [[ "$cpu_usage" -gt "$max_usage_ration_cpu" ]]
then
echo "current cpu usage is too high"
disply_top_cpu_process_information $1
return 1
else
return 0fi}
check_time=1
check_log_size $log_file
while [[ "1" -lt "2" ]]
docheck_time=$((check_time+1))
if [[ "$check_time" -gt "367200" ]] #3600*24*30/10=367200
then
check_log_size $log_file
check_time=1
fimonitor_memory $log_file
monitor_cpu $log_file
sleep "$check_interval"
done
Shell實現強制釋放記憶體
bin bash 系統分配的區總量 mem total free m awk nr 2 awk 當前剩餘的大小 mem free free m awk nr 3 awk 當前已使用的used大小 mem used free m grep mem awk if mem used 0 then 如果已被...
linux使用shell指令碼對多機器日誌監控
遇到的難題 日誌分散在三颱伺服器,每次報錯檢視日誌都需要一台一台找,非常麻煩,所以第一反應就是有沒有比較好的日誌系統可以一次性檢視所有的日誌,後來發現都需要搭建,或者安裝,或者配置相關服務,所以想了一些簡單的監控多機日誌的方案。定義設三颱機器為 c1,c2,c3 c1同時為跳板機 嘗試方案一 配置簡...
struct class 和union記憶體對齊
基本資料型別所佔空間 unsigned無符號型別相同 大小足夠容納最寬的成員 大小能被其包含的所有基本資料型別的大小所整除。是被資料型別的大小 1,2,4,8,不是變數大小 方法 記憶體大小只取決於最大的成員 找到佔空間最大的成員,取最大的空間值x 當x無法被所有的資料型別大小所整除,就補加a,使得...