mirror of
https://github.com/Snigdha-OS/snigdhaos-default-settings.git
synced 2025-09-20 16:44:56 +02:00
⚡️ perf(_extra): add some extra functionalities
This commit is contained in:
@@ -5,26 +5,17 @@
|
||||
|
||||
set -e # Exit immediately if a command exits with a non-zero status
|
||||
|
||||
# Colors for terminal output
|
||||
# Colors
|
||||
RED="\033[1;31m"
|
||||
GREEN="\033[1;32m"
|
||||
YELLOW="\033[1;33m"
|
||||
BLUE="\033[1;34m"
|
||||
RESET="\033[0m"
|
||||
|
||||
# Log file path
|
||||
LOG_FILE="/var/log/snigdhaos_cleanup.log"
|
||||
|
||||
# Function to log messages
|
||||
log_message() {
|
||||
echo -e "$(date +'%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
|
||||
}
|
||||
|
||||
# Function to display error message and exit
|
||||
error_handler() {
|
||||
echo -e "\n${RED}🚨 An error occurred during the cleanup process.${RESET}"
|
||||
echo -e "${RED}Error on line $1. Please check the system logs for details.${RESET}"
|
||||
log_message "Error occurred on line $1"
|
||||
echo -e "${RED}Error on line $1. Please check your system and try again.${RESET}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -35,16 +26,22 @@ trap 'error_handler $LINENO' ERR
|
||||
show_help() {
|
||||
echo -e "${BLUE}Usage: ${RESET}snigdhaos-cleanup.sh [OPTIONS]"
|
||||
echo -e ""
|
||||
echo -e "${GREEN}This script cleans up your system by removing unused package caches, crash reports, application logs, application caches, and trash.${RESET}"
|
||||
echo -e "${GREEN}This script will clean up your system by deleting unused package caches, crash reports, application logs, application caches, and trash.${RESET}"
|
||||
echo -e ""
|
||||
echo -e "${YELLOW}Options:${RESET}"
|
||||
echo -e " ${GREEN}-h, --help${RESET} Show this help message."
|
||||
echo -e " ${GREEN}-v, --version${RESET} Show script version."
|
||||
echo -e " ${GREEN}-v, --version${RESET} Display the script version."
|
||||
echo -e " ${GREEN}-f, --force${RESET} Skip confirmation prompt and force cleanup."
|
||||
echo -e " ${GREEN}--dry-run${RESET} Simulate cleanup without deleting anything."
|
||||
echo -e " ${GREEN}--rotate-logs${RESET} Rotate and archive logs instead of truncating them."
|
||||
echo -e " ${GREEN}--memory-cache${RESET} Clean system memory cache."
|
||||
echo -e " ${GREEN}--backup${RESET} Back up important configuration files."
|
||||
echo -e " ${GREEN}--notify${RESET} Send a notification when the cleanup is complete."
|
||||
echo -e ""
|
||||
echo -e "Example usage:"
|
||||
echo -e " snigdhaos-cleanup.sh # Starts the cleanup process with confirmation prompt."
|
||||
echo -e " snigdhaos-cleanup.sh -f # Skips confirmation and forces cleanup."
|
||||
echo -e " snigdhaos-cleanup.sh # Starts the cleanup process with a confirmation prompt."
|
||||
echo -e " snigdhaos-cleanup.sh -f # Skips the confirmation and forces cleanup."
|
||||
echo -e " snigdhaos-cleanup.sh --dry-run # See what would be cleaned without actually deleting."
|
||||
}
|
||||
|
||||
# Function to display version information
|
||||
@@ -54,6 +51,11 @@ show_version() {
|
||||
|
||||
# Parse command line options
|
||||
FORCE_CLEAN=false
|
||||
DRY_RUN=false
|
||||
ROTATE_LOGS=false
|
||||
CLEAN_MEMORY_CACHE=false
|
||||
BACKUP=false
|
||||
NOTIFY=false
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
@@ -68,6 +70,26 @@ while [[ "$#" -gt 0 ]]; do
|
||||
FORCE_CLEAN=true
|
||||
shift
|
||||
;;
|
||||
--dry-run)
|
||||
DRY_RUN=true
|
||||
shift
|
||||
;;
|
||||
--rotate-logs)
|
||||
ROTATE_LOGS=true
|
||||
shift
|
||||
;;
|
||||
--memory-cache)
|
||||
CLEAN_MEMORY_CACHE=true
|
||||
shift
|
||||
;;
|
||||
--backup)
|
||||
BACKUP=true
|
||||
shift
|
||||
;;
|
||||
--notify)
|
||||
NOTIFY=true
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}❌ Unknown option: $1${RESET}"
|
||||
show_help
|
||||
@@ -82,23 +104,83 @@ if [ "$EUID" -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to calculate space freed
|
||||
calculate_space_freed() {
|
||||
local before_size
|
||||
local after_size
|
||||
# Function to send notifications
|
||||
send_notification() {
|
||||
MESSAGE="Cleanup completed successfully!"
|
||||
notify-send "Cleanup Script" "$MESSAGE" || { echo -e "${RED}❌ Failed to send notification.${RESET}"; exit 1; }
|
||||
echo -e "${GREEN}✅ Notification sent.${RESET}"
|
||||
}
|
||||
|
||||
before_size=$(du -sh --exclude=/proc --exclude=/sys --exclude=/run --exclude=/tmp / | awk '{print $1}')
|
||||
# Function to back up important config files
|
||||
backup_config_files() {
|
||||
BACKUP_DIR="/path/to/backup"
|
||||
CONFIG_DIRS=("/etc" "/home/*/.config")
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
for dir in "${CONFIG_DIRS[@]}"; do
|
||||
sudo cp -r "$dir" "$BACKUP_DIR" || { echo -e "${RED}❌ Failed to backup $dir.${RESET}"; exit 1; }
|
||||
done
|
||||
echo -e "${GREEN}✅ Configuration files backed up.${RESET}"
|
||||
}
|
||||
|
||||
# Running cleanup functions
|
||||
clean_package_cache
|
||||
clean_crash_reports
|
||||
clean_application_logs
|
||||
clean_application_caches
|
||||
clean_trash
|
||||
# Function to clean memory cache
|
||||
clean_memory_cache() {
|
||||
echo -e "${YELLOW}⚠️ Cleaning memory cache...${RESET}"
|
||||
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches || { echo -e "${RED}❌ Failed to clean memory cache.${RESET}"; exit 1; }
|
||||
echo -e "${GREEN}✅ Memory cache cleaned.${RESET}"
|
||||
}
|
||||
|
||||
after_size=$(du -sh --exclude=/proc --exclude=/sys --exclude=/run --exclude=/tmp / | awk '{print $1}')
|
||||
# Function to rotate logs
|
||||
rotate_logs() {
|
||||
LOG_DIR="/var/log"
|
||||
LOG_ARCHIVE_DIR="/var/log/archives"
|
||||
mkdir -p "$LOG_ARCHIVE_DIR"
|
||||
sudo find "$LOG_DIR" -type f -name "*.log" -exec bash -c 'gzip -c "$0" > "$1/$(basename $0).gz" && truncate -s 0 "$0"' {} "$LOG_ARCHIVE_DIR" \;
|
||||
echo -e "${GREEN}✅ Logs rotated and archived.${RESET}"
|
||||
}
|
||||
|
||||
echo -e "${GREEN}Space freed: $before_size -> $after_size${RESET}"
|
||||
# Function to clean package cache
|
||||
clean_package_cache() {
|
||||
echo -e "${YELLOW}⚠️ Deleting package cache...${RESET}"
|
||||
if ! $DRY_RUN; then
|
||||
sudo pacman -Sc --noconfirm || { echo -e "${RED}❌ Failed to clean package cache.${RESET}"; exit 1; }
|
||||
fi
|
||||
echo -e "${GREEN}✅ Package cache cleaned.${RESET}"
|
||||
}
|
||||
|
||||
# Function to clean crash reports
|
||||
clean_crash_reports() {
|
||||
echo -e "${YELLOW}⚠️ Deleting crash reports...${RESET}"
|
||||
CRASH_DIR="/var/lib/systemd/coredump"
|
||||
if [ -d "$CRASH_DIR" ]; then
|
||||
sudo rm -rf "$CRASH_DIR"/* || { echo -e "${RED}❌ Failed to clean crash reports.${RESET}"; exit 1; }
|
||||
echo -e "${GREEN}✅ Crash reports cleaned.${RESET}"
|
||||
else
|
||||
echo -e "${GREEN}✅ No crash reports found.${RESET}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to clean application logs
|
||||
clean_application_logs() {
|
||||
echo -e "${YELLOW}⚠️ Truncating application logs...${RESET}"
|
||||
LOG_DIR="/var/log"
|
||||
sudo find "$LOG_DIR" -type f -name "*.log" -exec truncate -s 0 {} \; || { echo -e "${RED}❌ Failed to clean application logs.${RESET}"; exit 1; }
|
||||
echo -e "${GREEN}✅ Application logs cleaned.${RESET}"
|
||||
}
|
||||
|
||||
# Function to clean application caches
|
||||
clean_application_caches() {
|
||||
echo -e "${YELLOW}⚠️ Deleting application caches...${RESET}"
|
||||
CACHE_DIR="/home/*/.cache"
|
||||
sudo rm -rf $CACHE_DIR/* || { echo -e "${RED}❌ Failed to clean application caches.${RESET}"; exit 1; }
|
||||
echo -e "${GREEN}✅ Application caches cleaned.${RESET}"
|
||||
}
|
||||
|
||||
# Function to empty trash
|
||||
clean_trash() {
|
||||
echo -e "${YELLOW}⚠️ Emptying trash...${RESET}"
|
||||
TRASH_DIR="/home/*/.local/share/Trash"
|
||||
sudo rm -rf $TRASH_DIR/* || { echo -e "${RED}❌ Failed to empty trash.${RESET}"; exit 1; }
|
||||
echo -e "${GREEN}✅ Trash emptied.${RESET}"
|
||||
}
|
||||
|
||||
# Prompt for confirmation if not forced
|
||||
@@ -117,59 +199,32 @@ if ! $FORCE_CLEAN; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Run specific cleanup tasks based on flags
|
||||
echo -e "${BLUE}🧹 Starting cleanup process...${RESET}"
|
||||
|
||||
# Function to clean package cache
|
||||
clean_package_cache() {
|
||||
echo -e "${YELLOW}⚠️ Deleting package cache (this will remove old cached packages)...${RESET}"
|
||||
sudo pacman -Sc --noconfirm || { echo -e "${RED}❌ Failed to clean package cache.${RESET}"; exit 1; }
|
||||
log_message "Package cache cleaned"
|
||||
echo -e "${GREEN}✅ Package cache cleaned.${RESET}"
|
||||
}
|
||||
|
||||
# Function to clean crash reports
|
||||
clean_crash_reports() {
|
||||
echo -e "${YELLOW}⚠️ Deleting crash reports...${RESET}"
|
||||
CRASH_DIR="/var/lib/systemd/coredump"
|
||||
if [ -d "$CRASH_DIR" ]; then
|
||||
sudo rm -rf "$CRASH_DIR"/* || { echo -e "${RED}❌ Failed to clean crash reports.${RESET}"; exit 1; }
|
||||
log_message "Crash reports cleaned"
|
||||
echo -e "${GREEN}✅ Crash reports cleaned.${RESET}"
|
||||
else
|
||||
echo -e "${GREEN}✅ No crash reports found.${RESET}"
|
||||
# Perform the selected cleanup tasks
|
||||
if $BACKUP; then
|
||||
backup_config_files
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to clean application logs
|
||||
clean_application_logs() {
|
||||
echo -e "${YELLOW}⚠️ Truncating application logs...${RESET}"
|
||||
LOG_DIR="/var/log"
|
||||
sudo find "$LOG_DIR" -type f -name "*.log" -exec truncate -s 0 {} \; || { echo -e "${RED}❌ Failed to clean application logs.${RESET}"; exit 1; }
|
||||
log_message "Application logs cleaned"
|
||||
echo -e "${GREEN}✅ Application logs cleaned.${RESET}"
|
||||
}
|
||||
if $CLEAN_MEMORY_CACHE; then
|
||||
clean_memory_cache
|
||||
fi
|
||||
|
||||
# Function to clean application caches
|
||||
clean_application_caches() {
|
||||
echo -e "${YELLOW}⚠️ Deleting application caches...${RESET}"
|
||||
CACHE_DIR="/home/*/.cache"
|
||||
sudo rm -rf $CACHE_DIR/* || { echo -e "${RED}❌ Failed to clean application caches.${RESET}"; exit 1; }
|
||||
log_message "Application caches cleaned"
|
||||
echo -e "${GREEN}✅ Application caches cleaned.${RESET}"
|
||||
}
|
||||
if $ROTATE_LOGS; then
|
||||
rotate_logs
|
||||
else
|
||||
clean_package_cache
|
||||
clean_crash_reports
|
||||
clean_application_logs
|
||||
clean_application_caches
|
||||
clean_trash
|
||||
fi
|
||||
|
||||
# Function to empty trash
|
||||
clean_trash() {
|
||||
echo -e "${YELLOW}⚠️ Emptying trash...${RESET}"
|
||||
TRASH_DIR="/home/*/.local/share/Trash"
|
||||
sudo rm -rf $TRASH_DIR/* || { echo -e "${RED}❌ Failed to empty trash.${RESET}"; exit 1; }
|
||||
log_message "Trash emptied"
|
||||
echo -e "${GREEN}✅ Trash emptied.${RESET}"
|
||||
}
|
||||
|
||||
# Calculate space freed before and after cleanup
|
||||
calculate_space_freed
|
||||
# Send notification if required
|
||||
if $NOTIFY; then
|
||||
send_notification
|
||||
fi
|
||||
|
||||
echo -e "\n${GREEN}✅ Cleanup completed successfully!${RESET}"
|
||||
log_message "Cleanup completed successfully"
|
||||
exit 0
|
||||
|
Reference in New Issue
Block a user