Last active 10 months ago

這個 Bash 腳本用於 清理 Linux 系統的日誌檔案,主要包括 身份驗證日誌 (auth.log)、登入歷史 (wtmp, btmp, lastlog)、系統日誌 (syslog)、郵件日誌 (mail.log),並刪除舊的壓縮日誌 (.gz) 以釋放空間。此外,它會 重設失敗登入記錄 (faillog),確保 lastlog 權限正確,適用於 系統維護、隱私保護及釋放伺服器磁碟空間。

log_cleaning_commands.sh Raw
1#!/bin/bash
2
3# Define log file paths
4AUTH_LOG="/var/log/auth.log"
5BTMP_LOG="/var/log/btmp"
6WTMP_LOG="/var/log/wtmp"
7LASTLOG="/var/log/lastlog"
8SYSLOG="/var/log/syslog"
9MAIL_LOG="/var/log/mail.log"
10
11# Clear specific log files
12sudo truncate -s 0 $AUTH_LOG $BTMP_LOG $WTMP_LOG
13sudo truncate -s 0 $LASTLOG
14
15# Remove old compressed log files
16sudo rm -f $AUTH_LOG.{1,2.gz,3.gz,4.gz}
17sudo rm -f $SYSLOG.{1,2.gz,3.gz,4.gz}
18sudo rm -f $MAIL_LOG.{1,2.gz,3.gz,4.gz}
19
20# Reset lastlog and ensure permissions are correct
21sudo cp /dev/null $LASTLOG
22sudo chmod 644 $LASTLOG
23
24# Reset failed login attempts
25sudo faillog -r
26
27# Clear remaining large files (optional)
28sudo rm -f $BTMP_LOG.1
29
30# Confirmation message
31echo "Log files have been cleared and old logs removed."