生成 Linux 執行時間報告的 Bash 指令碼
出於一些原因,你可能需要每月收集一次 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.out
for host in cat /tmp/servers.txt
do
echo -n "$host: "
ssh $host uptime | awk '{print $3,$4}' | sed 's/,//'
done | column -t >> /tmp/uptime-report.out
cat /tmp/uptime-report.out | mail -s "Linux Servers Uptime Report" "2daygeek@gmail.com"
給 system-uptime-script.sh
設定可執行許可權。
$ chmod +x /opt/scripts/system-uptime-script.sh
最後執行 bash 指令碼獲取輸出。
# sh /opt/scripts/system-uptime-script.sh
你將收到類似以下的報告。
# cat /tmp/uptime-report.out
192.168.1.5: 2 days
192.168.1.6: 15 days
192.168.1.7: 30 days
192.168.1.8: 7 days
192.168.1.9: 67 days
192.168.1.10: 130 days
192.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.txt
do
echo -n "$host: "
ssh $host uptime | awk '{print $3,$4}' | sed 's/,//'
done | column -t >> /tmp/uptime-report-1.out
cat /tmp/uptime-report-1.out | awk ' $2 >= 30' > /tmp/uptime-report-2.out
cat /tmp/uptime-report-2.out | mail -s "Linux Servers Uptime Report" "2daygeek@gmail.com"
給 system-uptime-script-1.sh
設定可執行許可權。
$ chmod +x /opt/scripts/system-uptime-script-1.sh
最後新增一條 cronjob 來自動執行。它會在每天早上 7 點執行。
# crontab -e
0 7 * * * /bin/bash /opt/scripts/system-uptime-script-1.sh
注意: 你會在每天早上 7 點會收到一封電子郵件提醒,它是昨天的詳情。
你將收到類似下面的報告。
# cat /tmp/uptime-report-2.out
192.168.1.7: 30 days
192.168.1.9: 67 days
192.168.1.10: 130 days
via: https://www.2daygeek.com/bash-script-generate-linux-system-uptime-reports/
作者:Magesh Maruthamuthu 選題:lujun9972 譯者:geekpi 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- [20231023]生成bbed的執行指令碼(bash shell).txt指令碼
- 執行shell指令碼報錯:-bash: ./test1.sh: /bin/bash^M: ...指令碼
- Linux 定時執行指令碼、命令Linux指令碼
- Linux定時執行.sh指令碼Linux指令碼
- sleep 時間段不佔指令碼執行時間指令碼
- 在 CentOS/RHEL 系統上生成補丁合規報告的 Bash 指令碼CentOS指令碼
- [20190107]生成bbed執行指令碼:指令碼
- [20231021]生成bbed的執行指令碼.txt指令碼
- 在Linux中,有⼀個指令碼執行時間可能超過2天,如何做才能使其不間斷的執行,而且還可以隨時觀察指令碼執行時的輸出資訊?Linux指令碼
- 如何使用Docker構建執行時間較長的指令碼Docker指令碼
- Linux Shell指令碼時間排程Linux指令碼
- 詳解shell中source、sh、bash、./執行指令碼的區別指令碼
- 一個能夠生成 Markdown 表格的 Bash 指令碼指令碼
- LightDB/PostgreSQL 生成可重複執行的指令碼SQL指令碼
- awr報告每天自動生成指令碼指令碼
- 【AWR】Oracle批量生成awr報告指令碼Oracle指令碼
- sh指令碼執行報錯指令碼
- Linux編寫Bash指令碼的10個技巧Linux指令碼
- Linux 後臺執行 PHP 指令碼LinuxPHP指令碼
- python寫的指令碼在kail Linux 執行Python指令碼AILinux
- Bash指令碼指令碼
- Linux(CentOS)啟動時自動執行指令碼(rc.local)LinuxCentOS指令碼
- Linux 檢視程式啟動時間、執行時間Linux
- Linux命令執行時間測試Linux
- shell指令碼linux命令連續執行指令碼Linux
- Linux shell:執行shell指令碼的幾種方式Linux指令碼
- 通過 Redis 定時執行指令碼Redis指令碼
- javascript指令碼何時會被執行JavaScript指令碼
- 如何測試Linux命令執行時間?Linux
- 在 Linux 中執行.sh 指令碼 No such file or directoryLinux指令碼
- linux crontab下的指令碼不執行怎麼辦Linux指令碼
- Linux中執行Shell指令碼的方式(三種方法)Linux指令碼
- Shell指令碼——Linux系統中的時間猜數字指令碼Linux
- 模擬上傳multipart form data 指令碼生成時間軸ORM指令碼
- 『動善時』JMeter基礎 — 57、Linux系統中執行JMeter指令碼JMeterLinux指令碼
- PHP 避免同時執行一個指令碼PHP指令碼
- 使用bat指令碼執行MySQL命令時遇到的坑BAT指令碼MySql
- Bash 常用指令碼片段指令碼