生成 Linux 執行時間報告的 Bash 指令碼

2019-10-13 11:47:00

出於一些原因,你可能需要每月收集一次 Linux 系統執行時間報告。如果是這樣,你可以根據需要使用以下 bash 指令碼 之一。

我們為什麼要收集這份報告?在一段時間後重新啟動 Linux 伺服器是解決某些未解決問題的好方法。(LCTT 譯註:本文這些觀點值得商榷,很多伺服器可以穩定執行幾千天,尤其是有了核心熱修補程式之後,啟動並不是必須的。)

建議每 180 天重新啟動一次。但時間段也許取決於你公司的政策。如果你已經長時間執行伺服器而沒有重新啟動。這可能導致伺服器上出現一些效能或記憶體問題,我在許多伺服器上都注意到了這一點。

這些指令碼一次性提供了所有系統執行報告。

什麼是 uptime 命令

uptime 命令將告訴你系統已經執行了多長時間。它在一行中顯示以下資訊:當前時間、系統執行了多長時間、當前登入了多少使用者以及過去 1、5 和 15 分鐘的平均系統負載。

什麼是 tuptime?

tuptime 是用於報告系統的歷史和統計執行時間的工具,可在重新啟動之間儲存。它類似於 uptime 命令,但輸出更有趣。

1)檢查 Linux 系統執行時間的 Bash 指令碼

該 bash 指令碼將收集所有伺服器正常執行時間,並將報告傳送到給定的電子郵箱地址。

請替換為你的電子郵箱地址,而不是用我們的,否則你將不會收到郵件。

# vi /opt/scripts/system-uptime-script.sh#!/bin/bash> /tmp/uptime-report.outfor host in cat /tmp/servers.txtdoecho -n "$host: "ssh $host uptime | awk '{print $3,$4}' | sed 's/,//'done | column -t >> /tmp/uptime-report.outcat /tmp/uptime-report.out | mail -s "Linux Servers Uptime Report" "[email protected]"

system-uptime-script.sh 設定可執行許可權。

$ chmod +x /opt/scripts/system-uptime-script.sh

最後執行 bash 指令碼獲取輸出。

# sh /opt/scripts/system-uptime-script.sh

你將收到類似以下的報告。

# cat /tmp/uptime-report.out192.168.1.5:          2      days192.168.1.6:          15     days192.168.1.7:          30     days192.168.1.8:          7      days192.168.1.9:          67     days192.168.1.10:         130    days192.168.1.11:         23     days

2)檢查 Linux 系統是否執行了 30 天以上的 Bash 指令碼

此 bash 指令碼會收集執行 30 天以上的伺服器,並將報告傳送到指定的郵箱地址。你可以根據需要更改天數。

# vi /opt/scripts/system-uptime-script-1.sh#!/bin/bash> /tmp/uptime-report-1.out for host in cat /tmp/servers.txtdoecho -n "$host: "ssh $host uptime | awk '{print $3,$4}' | sed 's/,//'done | column -t >> /tmp/uptime-report-1.outcat /tmp/uptime-report-1.out | awk ' $2 >= 30' > /tmp/uptime-report-2.outcat /tmp/uptime-report-2.out | mail -s "Linux Servers Uptime Report" "[email protected]"

system-uptime-script-1.sh 設定可執行許可權。

$ chmod +x /opt/scripts/system-uptime-script-1.sh

最後新增一條 cronjob 來自動執行。它會在每天早上 7 點執行。

# crontab -e0 7 * * * /bin/bash /opt/scripts/system-uptime-script-1.sh

注意: 你會在每天早上 7 點會收到一封電子郵件提醒,它是昨天的詳情。

你將收到類似下面的報告。

# cat /tmp/uptime-report-2.out192.168.1.7:          30     days192.168.1.9:          67     days192.168.1.10:         130    days