-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcleanup.sh
executable file
·172 lines (146 loc) · 4.27 KB
/
cleanup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/bin/bash
# User info
USER='vinz'
DISK='nvme0n1p2'
# Colors for formatting output
NOCOLOR='\033[0m'
GREEN='\033[1;33m'
# Function to print section headers
current_task_title () {
echo -e "${GREEN}-------------------------------------------------${NOCOLOR}"
echo -e "${GREEN}$1${NOCOLOR}"
echo -e "${GREEN}-------------------------------------------------${NOCOLOR}"
}
# Function to confirm user's action
confirm_action() {
read -p "Etes-vous sûr de vouloir lancer le process de nettoyage ? (y/n) " yn
case $yn in
[Yy]* ) return 0;;
[Nn]* ) return 1;;
* ) echo "Veuillez répondre par 'y' ou 'n'."; return 1;;
esac
}
# Function to clean various logs
clean_logs() {
current_task_title "Nettoyage des logs"
sudo journalctl --vacuum-time=3d
sudo rm -f /var/log/*g
}
clean_tmp() {
current_task_title "Nettoyage des fichiers temporaires"
sudo rm -rf /tmp/*
}
# Function to list installed snaps and remove older versions
remove_old_snaps() {
current_task_title "Liste les snaps et supprime les vieilles versions"
snap list
set -eu
snap list --all | awk '/disabled/{print $1, $3}' |
while read -r snapname revision; do
snap remove "$snapname" --revision="$revision"
done
}
# Function to clean the thumbnail cache
clean_thumbnail_cache() {
current_task_title "Supprime le cache des vignettes system"
rm -rf ~/.cache/thumbnails/*
echo -e "${GREEN}ok${NOCOLOR}"
}
# Function to remove old kernels
remove_old_kernels() {
current_task_title "Supprime les kernels obsolètes"
current_kernel="$(uname -r | sed 's/\(.*\)-\([^0-9]\+\)/\1/')"
current_ver=${current_kernel/%-generic}
echo "La version courante est : ${current_kernel}"
function xpkg_list() {
dpkg -l 'linux-*' | sed '/^ii/!d;/linux-libc-dev/d;/'${current_ver}'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
}
old_kernels=$(xpkg_list)
if [ -z "$old_kernels" ]; then
echo "Aucun noyau obsolète trouvé. Rien à supprimer."
return
fi
echo "Les noyaux suivants (désormais inutilisés) vont être supprimés"
echo "$old_kernels"
read -p '-- On continue? (y / n) --' -n 1 -r
printf "\n"
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "$old_kernels" | xargs sudo apt-get -y purge
else
echo 'Opération a été annulée - aucun changement effectué'
fi
}
# Function to empty trash bin
empty_trash_bin() {
current_task_title "Vidage de la corbeille"
rm -rf ~/.local/share/Trash/*
echo -e "${GREEN}ok${NOCOLOR}"
}
# Function to remove residual configurations
remove_residual_config() {
current_task_title "Suppression des résidus de configuration logiciels"
sudo apt purge ~c
echo -e "${GREEN}ok${NOCOLOR}"
}
# Function to check disk usage on home user folders
check_home_disk_usage() {
current_task_title "Tailles des dossiers de home"
sudo du -shc /home/${USER}/* | sort -rh
}
# Function to perform system update
system_update() {
current_task_title "Mise à jour des paquets"
while true; do
read -p "Voulez-vous faire une mise à jour des paquets? (y/n) " yn
case $yn in
[Yy]* ) sudo apt update -y; break;;
[Nn]* ) break;;
* ) echo "Veuillez répondre par 'y' ou 'n'.";;
esac
done
}
# Function to perform system upgrade
system_upgrade() {
current_task_title "Mise à niveau des paquets"
while true; do
read -p "Voulez-vous faire une mise à niveau des paquets? (y/n) " yn
case $yn in
[Yy]* ) sudo apt upgrade -y; break;;
[Nn]* ) break;;
* ) echo "Veuillez répondre par 'y' ou 'n'.";;
esac
done
}
# Function to clean apt packages and cache
clean_apt_packages() {
current_task_title "Nettoyage des paquets et du cache"
apt-get -y autoremove --purge
apt-get -y clean
apt-get -y autoclean
}
# Function to check disk space after cleaning
check_disk_space() {
current_task_title "Taille du disque après nettoyage"
df /dev/${DISK} -h --output=source,size,used,pcent
}
# Main function to execute all cleaning tasks
main() {
if confirm_action; then
clean_logs
clean_tmp
remove_old_snaps
clean_thumbnail_cache
remove_old_kernels
empty_trash_bin
remove_residual_config
check_home_disk_usage
system_update
system_upgrade
clean_apt_packages
check_disk_space
else
echo "Le processus de nettoyage a été annulé."
fi
}
# Run the main function
main