linux server disk cleaner sccripts

This commit is contained in:
arul 2025-03-12 12:59:01 +05:30
commit b25dfe4e39
5 changed files with 171 additions and 0 deletions

0
README.md Normal file
View File

4
clean-disk Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
journalctl --disk-usage #checks disk size used by journal
journalctl --vacuum-time=3d #deletes journal older than 3 days

63
clean_old_kernals.sh Normal file
View File

@ -0,0 +1,63 @@
#!/bin/bash
# Get currently running kernel version
current_kernel=$(uname -r)
echo "Currently running kernel: $current_kernel"
# Get all installed kernels
installed_kernels=$(dpkg --list | grep linux-image | awk '{print $2}')
# Determine the latest kernel version installed
kernel_versions=$(echo "$installed_kernels" | grep -Eo '6.1.0-[0-9]+-cloud-amd64' | sort -V)
latest_kernel=$(echo "$kernel_versions" | tail -n 1)
second_latest=$(echo "$kernel_versions" | tail -n 2 | head -n 1)
third_latest=$(echo "$kernel_versions" | tail -n 3 | head -n 1)
echo -e "\nKernels that will be KEPT:"
echo "$current_kernel (currently running)"
echo "$latest_kernel (latest installed)"
echo "$second_latest (second latest)"
echo "$third_latest (third latest)"
# Prepare a list of kernels to remove
echo -e "\nKernels that will be REMOVED:"
kernels_to_remove=()
for kernel in $installed_kernels; do
if [[ "$kernel" != *"$current_kernel"* ]] && \
[[ "$kernel" != *"$latest_kernel"* ]] && \
[[ "$kernel" != *"$second_latest"* ]] && \
[[ "$kernel" != *"$third_latest"* ]]; then
echo "$kernel"
kernels_to_remove+=("$kernel")
fi
done
# Confirm before removing
echo -e "\nDo you want to proceed with the removal? (y/N): "
read -r confirm
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
echo "Aborted."
exit 0
fi
# Remove old kernels
if [ ${#kernels_to_remove[@]} -eq 0 ]; then
echo "No old kernels to remove."
else
echo "Removing old kernels..."
sudo apt-get purge -y "${kernels_to_remove[@]}"
sudo apt-get autoremove --purge -y
sudo apt-get clean
fi
# Update GRUB
echo "Updating GRUB..."
sudo update-grub
# Display remaining disk space
echo -e "\nDisk space after cleanup:"
df -h /
echo "Cleanup completed!"

View File

@ -0,0 +1,52 @@
#!/bin/bash
echo "Displaying the 20 largest files on the system:"
find / -xdev -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 20
echo -e "\nThe following files are safe to remove and will free up space:"
SAFE_TO_REMOVE=(
"/var/log/btmp"
"/usr/local/nginx/logs/access.log"
"/usr/local/nginx/logs/error.log"
"/var/log/nginx/access.log"
"/var/log/letsencrypt/letsencrypt.log"
"/var/log/nginx/yarr_access.log"
"/var/lib/apt/lists/*"
)
for file in "${SAFE_TO_REMOVE[@]}"; do
if [ -e "$file" ] || [ -d "$file" ]; then
echo "$file"
fi
done
read -p "Do you want to proceed with the removal? (y/N): " CONFIRM
if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
echo -e "\nRemoving files..."
for file in "${SAFE_TO_REMOVE[@]}"; do
if [ -f "$file" ]; then
> "$file"
echo "Truncated: $file"
elif [ -d "$file" ]; then
rm -rf "$file"
echo "Removed directory: $file"
fi
done
echo -e "\nCleaning APT cache..."
apt clean
echo -e "\nPruning Docker (if installed)..."
if command -v docker >/dev/null 2>&1; then
docker system prune -af
docker volume prune -f
fi
echo -e "\nCleaning journal logs..."
journalctl --vacuum-size=50M
echo -e "\nCleanup completed."
else
echo "Operation cancelled."
fi

52
remove-heavy-packages.sh Normal file
View File

@ -0,0 +1,52 @@
#!/bin/bash
# Display the 20 heaviest installed packages
echo "Top 20 heaviest installed packages:"
echo "-----------------------------------"
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -rn | awk '{printf "%d. %.3f MB\t%s\n", NR, $1/1024, $2}' | head -n 20
# Prompt user for input
echo -e "\nDo you want to remove any of these packages? (y/N): "
read -r confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
echo -e "\nEnter the numbers of the packages to remove (e.g., 1 3 5), or press Enter to skip: "
read -r choices
if [ -n "$choices" ]; then
# Get the package names for the chosen numbers
packages_to_remove=()
for choice in $choices; do
package=$(dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -rn | awk '{print $2}' | head -n 20 | sed -n "${choice}p")
if [ -n "$package" ]; then
packages_to_remove+=("$package")
else
echo "Invalid choice: $choice"
fi
done
# Confirm and remove the selected packages
if [ ${#packages_to_remove[@]} -gt 0 ]; then
echo -e "\nThe following packages will be removed: ${packages_to_remove[*]}"
echo -e "Are you sure? (y/N): "
read -r final_confirm
if [[ "$final_confirm" =~ ^[Yy]$ ]]; then
apt remove --purge "${packages_to_remove[@]}"
apt autoremove -y
echo "Selected packages removed successfully."
else
echo "Operation cancelled."
fi
else
echo "No valid packages selected for removal."
fi
else
echo "No packages selected. Exiting."
fi
else
echo "No action taken. Exiting."
fi