Shell程式設計 監控檢查系統某程序控制代碼使用量

2021-08-31 18:43:14 字數 2385 閱讀 6060

題目要求:使用shell指令碼監控檢查系統某程序控制代碼使用量

分析:在對應用服務進行維護時,也經常遇到由於控制代碼使用 過量導致業務中斷的情況。每個平台對程序的控制代碼使用都是有限的,例如在 linux 平台,我們可以使用 ulimit – n 命令(open files (-n) 1024)或者對 /etc/security/limits.conf 的內容進行檢視,得到程序控制代碼限制。控制代碼使用過高可能由於負載過高,控制代碼洩露等情況,通過指令碼對業務程序控制代碼使用量進行時時監控,可以在異常時及時傳送告警(例如通過簡訊),便於維護人員及時處理。

我們可以通過指定程序pid獲得此程序控制代碼使用量,如果此程序控制代碼使用量超過 900(可以根據實際情況進行調整),則輸出告警,否則輸出正常資訊。

解答:命令列測試:

[root@myhost ~]# egrep -v "#|^$" /etc/security/limits.conf

root soft nofile 65535

root hard nofile 65535

* soft nofile 65535

* hard nofile 65535

[root@myhost ~]# ulimit -n

65535

[root@myhost ~]# ps -ef | egrep tomcat | egrep root | egrep -v "grep|vi|tail" | sed -n 1p | awk ''

18430

[root@myhost ~]# ls /proc/18430/fd

0 105 113 125 135 19 23 3 340 357 37 393 400 408 418 426 437 460 51 59 66 699 74 81 89 96

1 106 114 126 136 2 24 30 341 358 374 395 401 409 42 427 438 461 52 6 67 7 75 82 9 97

10 108 115 127 14 20 25 31 342 359 38 396 402 41 420 428 439 462 53 60 68 70 76 83 90 98

100 109 116 128 15 21 26 32 343 36 388 397 403 410 421 429 44 47 54 61 69 700 77 84 91 99

101 11 117 129 16 212 266 33 35 360 389 398 404 411 422 43 45 48 55 62 694 701 78 85 92

102 110 118 13 17 22 27 337 354 364 39 399 405 412 423 430 458 49 56 63 695 71 79 86 93

103 111 12 131 18 222 28 339 355 365 390 4 406 416 424 431 459 5 57 64 696 72 8 87 94

104 112 121 134 189 224 29 34 356 367 391 40 407 417 425 432 46 50 58 65 698 73 80 88 95

[root@myhost ~]# ls /proc/18430/fd | wc -l

204

指令碼:
#!/bin/sh

source /etc/profile

#define variable

psuser=$1

psprocess=$2

pid= `ps -ef | egrep $ | egrep $ | egrep -v "grep|vi|tail" | sed -n 1p | awk ''`

echo $

if [ -z $ ];then

echo "the process does not exist."

exit 1

fi

des=`ls /proc/$/fd | wc -l`

echo $

if [ $ -ge 900 ];

then

echo 「the number of des is larger than 900」

else

echo 「the usage of des is ok」

fi

用shell指令碼監控系統

簡單的用shell指令碼寫乙個 監控 程式作為思路,大致為 實時檢測系統的記憶體使用率,如果大於閾值那麼報警 如果有條件可以使用簡訊介面或者實在不行可以使用郵件通知 並記錄到日誌檔案裡,如果小於閾值那麼正常顯示。bin bash check mem 100 free grep i mem awk b...

用shell指令碼監控系統

簡單的用shell指令碼寫乙個 監控 程式作為思路,大致為 實時檢測系統的記憶體使用率,如果大於閾值那麼報警 如果有條件可以使用簡訊介面或者實在不行可以使用郵件通知 並記錄到日誌檔案裡,如果小於閾值那麼正常顯示。bin bash check mem 100 free grep i mem awk b...

Zabbix獲取並監控linux系統的程序名

最近需要監控執行在業務系統上的程序,要求是看到具體的程序名。通常監控程序一般可以使用內建的鍵值,也就是 proc.num 程序名,root,這個鍵值,但只能返回的是程序的數量,雖然效果上也能實現,但和預期的結果有些區別,而且也不直觀,尤其在同乙個程序數多的時候。下面說下獲取具體程序名的方法 1 ag...