#1 Le 26/09/2017, à 20:56
- jlemonde
Petit script de maintenance (apt-get). Besoin de retour critique.
Bonjour !
J'ai fait un petit script de maintenance me permettant de mettre à jour mon ordi et supprimer les paquets obsolètes, entre autres.
Je me demandais simplement si vous aviez à me proposer des commentaires ou des remarques, d'éventuelles suggestion d'amélioration, etc.
Je me demandais aussi si dans "sudo apt-get dist-upgrade -u -y", combiner les options -y et -u avait un sens ??
PS : À noter qu'une des commandes utilise aptitude (c'est donc une dépendance).
Merci à vous ! Vous êtes naturellement libres de réutiliser mon code.
Johannes
#!/bin/bash
# You need aptitude to run this script.
# sudo apt-get install aptitude
echo ">> SCRIPT DE MAINTENANCE v0.1"
UPDATE=false
UPGRADE=false
DISTUPG=false
AUTOCLEAN=false
AUTOREMOVE=false
AUTOPURGE=false
CORBEILLE=false
THUMBS=false
HOMETEMP=false
OLDERRORS=false
HELP=false
if [ "$#" == 0 ]; then
UPDATE=true
UPGRADE=true
DISTUPG=false
AUTOCLEAN=true
AUTOREMOVE=true
AUTOPURGE=false
CORBEILLE=true
THUMBS=true
HOMETEMP=true
OLDERRORS=true
fi
for v in "$@"
do
for (( i=0; i<"${#v}"; i++ ))
do
case "${v:i:1}" in
[Hh])
HELP=true
break;;
[Yy])
UPDATE=true
break;;
[Uu])
UPDATE=true
UPGRADE=true
break;;
[Dd])
UPDATE=true
UPGRADE=true
DISTUPG=true
break;;
[cCrR])
UPDATE=true
AUTOCLEAN=true
AUTOREMOVE=true
break;;
[Pp])
AUTOPURGE=true
break;;
[Ii])
THUMBS=true
break;;
[Mm])
HOMETEMP=true
break;;
[Ss])
CORBEILLE=true
break;;
[Tt])
THUMBS=true
HOMETEMP=true
CORBEILLE=true
break;;
[Ee])
OLDERRORS=true
break;;
[Aa])
UPDATE=true
UPGRADE=true
DISTUPG=true
AUTOCLEAN=true
AUTOREMOVE=true
AUTOPURGE=true
CORBEILLE=true
THUMBS=true
HOMETEMP=true
OLDERRORS=true
break;;
esac
done
done
if [ $HELP == true ]; then
echo ">> HELP"
echo " Y : Update"
echo " U : Update and upgrade"
echo " D : Update, upgrade and dist-upgrade"
echo " C : Update, autoclean et autoremove"
echo " P : Automatic purge"
echo " R : (alias for C)"
echo " I : Find and delete thumbnail images"
echo " M : Find and temp files in the home directory"
echo " S : Empty trash"
echo " T : (shortcut to I, M and S at once)"
echo " E : Delete old error logs"
echo " : (running the app without any flag equals to running it with all flags excepted D, P and H)"
echo " A : (shortcut to all previously named flags at once)"
echo " H : Prints this help and exits"
exit
fi
if [ $UPDATE == true ]; then
echo ">> MISE À JOUR DE L'INDEX DES LIBRAIRIES"
echo " sudo apt-get update -y"
sudo apt-get update -y
fi
if [ $UPGRADE == true ]; then
echo ">> MISE À JOUR DES PAQUETS"
echo " sudo apt-get upgrade -y"
sudo apt-get upgrade -y
fi
if [ $DISTUPG == true ]; then
echo ">> MISE À JOUR INTELLIGENTE DES PAQUETS"
echo " sudo apt-get dist-upgrade -u -y"
# -u demande à l'utilisateur en lui montrant une liste
# -y selectionne OUI automatiquement. Du coup, c'est un peu inutile de les mettre ensembles.
# mais il me semble que comme ça, on voit la liste, sinon on ne la verrait pas.
# Cette étape peut être longue si cela n'a pas été fait depuis longtemps.
sudo apt-get dist-upgrade -u -y
fi
if [ $AUTOCLEAN == true ]; then
echo ">> AUTOSUPPRESSION DES PAQUETS INUTILES"
echo " sudo apt-get autoclean -y"
sudo apt-get autoclean -y
fi
if [ $AUTOREMOVE == true ]; then
echo ">> AUTOSUPPRESSION DES DÉPENDANCES OBSOLÈTES"
echo " sudo apt-get autoremove -y"
sudo apt-get autoremove -y
fi
if [ $AUTOPURGE == true ]; then
echo ">> AUTOSUPPRESSION DES FICHIERS DE PAQUETS AYANT ÉTÉ SUPPRIMÉS MAIS NON PURGÉS"
echo " sudo aptitude purge '~c' -y"
sudo aptitude purge '~c' -y
fi
if [ $CORBEILLE == true ]; then
echo ">> VIDANGE DE CORBEILLE"
echo " rm -rf ~/.local/share/Trash/*"
rm -rf ~/.local/share/Trash/*
fi
if [ $THUMBS == true ]; then
echo ">> SUPPRESSION DES MINIATURES"
echo " find ~/.thumbnails -type f -atime +7 -delete"
find ~/.thumbnails -type f -atime +7 -delete
fi
if [ $HOMETEMP == true ]; then
echo ">> SUPPRESSION DES FICHIERS TEMPORAIRES DU DOSSIER HOME"
echo " find ~/ -name '*~' -exec rm {} \;"
find ~/ -name '*~' -exec rm {} \;
fi
if [ $OLDERRORS == true ]; then
echo ">> SUPPRESSION DES LOGS D'ANCIENNES ERREURS"
echo " sudo rm /var/crash/*"
sudo rm /var/crash/*
fi
Dernière modification par jlemonde (Le 26/09/2017, à 20:57)
Hors ligne
#2 Le 26/09/2017, à 21:48
- DRbuntu91
Re : Petit script de maintenance (apt-get). Besoin de retour critique.
Perso je trouve ça très utile (je m'étais fait un petit pense-bête par ce que j' n'arrive pas tj a me souvenir de la syntaxe des commandes a faire)
J'ai testé les options U, D, I, M et E
PS: le message dans le help pour l'option M ne devrait pas etre "Find and delete temp files in the home directory"?
Portable CLEVO W55SU1, Intel i5-4200M, RAM=8Go, DD=500Go mSATA, BIOS 4.6.5 AMI, Ubuntu 16.04 LTS a jour
Puis pour bidouiller un vieux portable Dell Precision M4600 avec W10 + DEBIAN-Buster
Utilisateur Ubuntu depuis Janvier 2017
Hors ligne
#3 Le 26/09/2017, à 21:48
- grandtoubab
Re : Petit script de maintenance (apt-get). Besoin de retour critique.
salut
Dans le même ordre d'idée j'ai fait un script qui est lancé par un service systemd au boot et qui envoi les compte-rendu par mail que je lis avec Thunderbird
root@debian:/opt# cat perso-apt
#!/bin/sh
# pour tracer demasquer set -x
#set -x
#
#
# test si le fichier résultat existe sinon c'est le tout premier lancement et alors créer le fichier
if [ ! -f "/var/tmp/resul-opt-perso-apt.txt" ];
then touch /var/tmp/resul-opt-perso-apt.txt
fi
# comparaison de la date du jour et de la date de derniere modification du fichier
#
# date du jour
ddj=$(date +%s)
# date de la dernière modification du fichier
ddmf=$(stat -c %Y /var/tmp/resul-opt-perso-apt.txt)
# comparaison
comp=$(($ddj-$ddmf))
# référence 8 h = 28800 secondes
ref=28800
if [ $comp -lt $ref ]
then
echo $comp "secondes depuis la dernière mise à jour"
exit
else echo 'Au moins 8 heures depuis le dernier update'
fi
# mise a jour des listes
echo "****************************************************************" > /var/tmp/resul-opt-perso-apt.txt
date >> /var/tmp/resul-opt-perso-apt.txt
echo " Mise à jour des listes apt" >> /var/tmp/resul-opt-perso-apt.txt
apt update >> /var/tmp/resul-opt-perso-apt.txt 2> /dev/null
echo "resultat de la commande apt update ="$? >> /var/tmp/resul-opt-perso-apt.txt
# mise à jour des paquets
echo "****************************************************************" >> /var/tmp/resul-opt-perso-apt.txt
echo " Mise à jour" >> /var/tmp/resul-opt-perso-apt.txt
export DEBIAN_FRONTEND=noninteractive
apt full-upgrade --fix-missing -y >> /var/tmp/resul-opt-perso-apt.txt 2> /dev/null
echo "resultat de la commande apt-full-upgrade ="$? >> /var/tmp/resul-opt-perso-apt.txt
dpkg --audit >> /var/tmp/resul-opt-perso-apt.txt 2> /dev/null
echo "****************************************************************" >> /var/tmp/resul-opt-perso-apt.txt
# envoi du mail de résultat
date >> /var/tmp/resul-opt-perso-apt.txt
/usr/bin/mailx -s "résul opt/perso-apt" root@localhost.localdomain < /var/tmp/resul-opt-perso-apt.txt &> /dev/null
echo "mail envoyé à root par /opt/perso-apt"
echo "temporisation"
sleep 5
cat /lib/systemd/system/update-perso.service
[Unit]
Description=update-perso
After=exim4.service
[Service]
Type=oneshot
ExecStart=/opt/perso-apt
[Install]
WantedBy=multi-user.target
export DEBIAN_FRONTEND=noninteractive c'est pour éviter les erreurs debconf
https://manpages.debian.org/jessie/debc … .7.fr.html
et les clean je les lance par cron une fois par semaine
/etc/cron.weekly$ cat perso-apt
#!/bin/sh
# pour tracer demasquer set -x
#set -x
#
# listage utilisation disque avant
echo " listage occupation du disque"
df -h
# tempo pour éviter les conflits de verrou
sleep 300
export DEBIAN_FRONTEND=noninteractive
echo "**********"
echo " Nettoyage"
echo " apt clean"
apt-get clean
echo "resultat de la commande apt clean ="$?
echo "*************************************"
echo " apt autoclean"
apt-get autoclean
echo "resultat de la commande apt autoclean ="$?
echo "*****************************************"
echo " apt purge"
apt-get purge --autoremove -y
echo "resultat de la commande apt autoremove ="$?
echo "******************************************"
# listage utilisation disque après
echo " listage occupation du disque après nettoyage"
df -h
#
NB cron se charge d'envoyer le mail de résultat des commandes
Dernière modification par grandtoubab (Le 27/09/2017, à 08:29)
Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....
Hors ligne
#4 Le 04/11/2017, à 23:36
- jlemonde
Re : Petit script de maintenance (apt-get). Besoin de retour critique.
Superbe idée que s'envoyer tout ça par mail ! Je viens de configurer ssmtp pour m'envoyer le résultat par mail via le crontab de root
Du coup, j'ai fait une nouvelle version de mon script : une version qui contient un flag W qui va vérifier si le script avait déjà été utilisé cette semaine là et quitter si oui. Ensuite le cron peut facilement exécuter le script toutes les heures et tous les lundis dès allumage de l'ordi, à la prochaine heure pleine, bam, ça fait la mise à jour complète.
#!/bin/bash
# You need aptitude to run this script.
# sudo apt-get install aptitude
# Run like this : sudo script_name.sh [flags]
# From root's crontab, use for instance :
# @hourly path/to/script_name.sh wcdpa
# where 'wcdpa' are the flags. Actually, 'cdp' are not needed when 'a' is set.
# then don't forget to send the result via email (configure ssmtp first, for example)
UPDATE=false
UPGRADE=false
DISTUPG=false
AUTOCLEAN=false
AUTOREMOVE=false
AUTOPURGE=false
CORBEILLE=false
THUMBS=false
HOMETEMP=false
OLDERRORS=false
ONCE_A_WEEK=false
SCRIPT=$(realpath $0)
DIRNAME=$(dirname $SCRIPT)
WEEKLY_FILE="$DIRNAME/.maintenance-last-week"
HELP=false
if [ "$#" == 0 ]; then
UPDATE=true
UPGRADE=true
DISTUPG=false
AUTOCLEAN=true
AUTOREMOVE=true
AUTOPURGE=false
CORBEILLE=true
THUMBS=true
HOMETEMP=true
OLDERRORS=true
fi
for v in "$@"
do
for (( i=0; i<"${#v}"; i++ ))
do
case "${v:i:1}" in
[Hh])
HELP=true
break;;
[Ww])
ONCE_A_WEEK=true
if [ -f $WEEKLY_FILE ]; then
varf=$(<$WEEKLY_FILE)
vard=$(date "+%W")
if [ "$varf" == "$vard" ]; then
exit;
fi
fi
continue;;
[Yy])
UPDATE=true
continue;;
[Uu])
UPDATE=true
UPGRADE=true
continue;;
[Dd])
UPDATE=true
UPGRADE=true
DISTUPG=true
continue;;
[cCrR])
UPDATE=true
AUTOCLEAN=true
AUTOREMOVE=true
continue;;
[Pp])
AUTOPURGE=true
continue;;
[Ii])
THUMBS=true
continue;;
[Mm])
HOMETEMP=true
continue;;
[Ss])
CORBEILLE=true
continue;;
[Tt])
THUMBS=true
HOMETEMP=true
CORBEILLE=true
continue;;
[Ee])
OLDERRORS=true
continue;;
[Aa])
UPDATE=true
UPGRADE=true
DISTUPG=true
AUTOCLEAN=true
AUTOREMOVE=true
AUTOPURGE=true
CORBEILLE=true
THUMBS=true
HOMETEMP=true
OLDERRORS=true
continue;;
esac
done
done
echo ">> SCRIPT DE MAINTENANCE v0.2"
if [ $HELP == true ]; then
echo ">> HELP"
echo " Y : Update"
echo " U : Update and upgrade"
echo " D : Update, upgrade and dist-upgrade"
echo " C : Update, autoclean et autoremove"
echo " R : (alias for C)"
echo " P : Automatic purge"
echo " I : Find and delete thumbnail images"
echo " M : Find and delete temp files in the home directory"
echo " S : Empty trash"
echo " T : (shortcut to I, M and S at once)"
echo " E : Delete old error logs"
echo " : (running the app without any flag equals to running it with all previously named flags excepted D and P ; this does not work if you use the W flag)"
echo " A : (shortcut to all previously named flags at once)"
echo " H : Prints this help and exits"
echo " W : Exits if the script was already called with this flag on same week. Usefull for crontabs."
exit
fi
if [ $UPDATE == true ]; then
echo ">> MISE À JOUR DE L'INDEX DES LIBRAIRIES"
echo " apt-get update -y"
apt-get update -y
fi
if [ $UPGRADE == true ]; then
echo ">> MISE À JOUR DES PAQUETS"
echo " apt-get upgrade -y"
apt-get upgrade -y
fi
if [ $DISTUPG == true ]; then
echo ">> MISE À JOUR INTELLIGENTE DES PAQUETS"
echo " apt-get dist-upgrade -u -y"
# -u demande à l'utilisateur en lui montrant une liste
# -y selectionne OUI automatiquement. Du coup, c'est un peu inutile de les mettre ensembles.
# mais il me semble que comme ça, on voit la liste, sinon on ne la verrait pas.
# Cette étape peut être longue si cela n'a pas été fait depuis longtemps.
apt-get dist-upgrade -u -y
fi
if [ $AUTOCLEAN == true ]; then
echo ">> AUTOSUPPRESSION DES PAQUETS INUTILES"
echo " apt-get autoclean -y"
apt-get autoclean -y
fi
if [ $AUTOREMOVE == true ]; then
echo ">> AUTOSUPPRESSION DES DÉPENDANCES OBSOLÈTES"
echo " apt-get autoremove -y"
apt-get autoremove -y
fi
if [ $AUTOPURGE == true ]; then
echo ">> AUTOSUPPRESSION DES FICHIERS DE PAQUETS AYANT ÉTÉ SUPPRIMÉS MAIS NON PURGÉS"
echo " aptitude purge '~c' -y"
aptitude purge '~c' -y
fi
if [ $CORBEILLE == true ]; then
echo ">> VIDANGE DE CORBEILLE"
echo " rm -rf ~/.local/share/Trash/*"
rm -rf ~/.local/share/Trash/*
fi
if [ $THUMBS == true ]; then
echo ">> SUPPRESSION DES MINIATURES"
echo " find ~/.thumbnails -type f -atime +7 -delete"
find ~/.thumbnails -type f -atime +7 -delete
fi
if [ $HOMETEMP == true ]; then
echo ">> SUPPRESSION DES FICHIERS TEMPORAIRES DU DOSSIER HOME"
echo " find ~/ -name '*~' -exec rm {} \;"
find ~/ -name '*~' -exec rm {} \;
fi
if [ $OLDERRORS == true ]; then
echo ">> SUPPRESSION DES LOGS D'ANCIENNES ERREURS"
echo " rm /var/crash/*"
rm /var/crash/*
fi
if [ $ONCE_A_WEEK == true ]; then
date "+%W" > $WEEKLY_FILE
fi
Hors ligne
#5 Le 05/11/2017, à 00:25
- Watael
Re : Petit script de maintenance (apt-get). Besoin de retour critique.
salut,
j'aurais utilisé getopts, et des fonctions (définies plus tôt) dans le case avec l'opérateur de contrôle ;;& qui permet de tester le cas suivant.
en gros :
fonction_A() { echo AAA;}
fonction_B() { echo BBB;}
fonction_C() { fonction_B; echo CCC;}
while getopts aAbBcC opt
do
case $opt in
[aA]) fonction_A ;;&
[bB]) fonction_A; fonction_B ;;&
[cC]) fonction_C ;;&
esac
done
Dernière modification par Watael (Le 05/11/2017, à 00:25)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 05/11/2017, à 08:35
- DonutMan75
Re : Petit script de maintenance (apt-get). Besoin de retour critique.
Hello,
merci pour ces scripts jlemonde et grandtoubab !
grandtoubab, petite question de curiosité : pourquoi avoir mis le lancement au boot du script dans systemd et pas dans une crontab @boot ?
Y'a t'-il une raison particulière ou bien est-ce équivalent ?
Bonne journée à tous
Donut
Hors ligne
#7 Le 05/11/2017, à 09:04
- grandtoubab
Re : Petit script de maintenance (apt-get). Besoin de retour critique.
grandtoubab, petite question de curiosité : pourquoi avoir mis le lancement au boot du script dans systemd et pas dans une crontab @boot ?
Y'a t'-il une raison particulière ou bien est-ce équivalent ?
Donut
c'est pour la beauté du geste savoir utiliser les services de l'init systemd
je peux meme voir comment ça s'est passé dans les commandes de controle
systemctl status update-perso.service -l --no-pager
● update-perso.service - update-perso
Loaded: loaded (/lib/systemd/system/update-perso.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sun 2017-11-05 09:02:40 CET; 12min ago
Process: 1305 ExecStart=/opt/perso-apt (code=exited, status=0/SUCCESS)
Main PID: 1305 (code=exited, status=0/SUCCESS)
nov. 05 09:02:27 debian su[9714]: + ??? root:debian-security-support
nov. 05 09:02:27 debian su[9714]: pam_unix(su:session): session opened for user debian-security-support by (uid=0)
nov. 05 09:02:28 debian su[9714]: pam_unix(su:session): session closed for user debian-security-support
nov. 05 09:02:28 debian su[9766]: Successful su for debian-security-support by root
nov. 05 09:02:28 debian su[9766]: + ??? root:debian-security-support
nov. 05 09:02:28 debian su[9766]: pam_unix(su:session): session opened for user debian-security-support by (uid=0)
nov. 05 09:02:29 debian su[9766]: pam_unix(su:session): session closed for user debian-security-support
nov. 05 09:02:30 debian perso-apt[1305]: mail envoyé à root par /opt/perso-apt
nov. 05 09:02:30 debian perso-apt[1305]: temporisation
nov. 05 09:02:40 debian systemd[1]: Started update-perso.
systemd-analyze blame
5min 59.199s update-perso.service
1min 27.934s sav-protect.service
11.731s NetworkManager-wait-online.service
9.360s exim4.service
7.738s winbind.service
6.204s ModemManager.service
Mais je pense qu'au niveau résultat, ça se vaut.
Ce que j'aime bien c'est avoir le compte-rendu intégral de la mise à jour dans le mail.
Par exemple ce matin
Paramétrage de dbus (1.12.0-1) ...
A reboot is required to replace the running dbus-daemon.
Please reboot the system when convenient.
Les crontab je m'en sert aussi et je les ai triturées à ma façon
journalctl -xb | grep cron
nov. 05 09:20:35 debian systemd[1]: Started Trigger anacron every hour.
-- Subject: L'unité (unit) anacron.timer a terminé son démarrage
-- L'unité (unit) anacron.timer a terminé son démarrage, avec le résultat RESULT.
nov. 05 09:20:36 debian systemd[1]: Started Run anacron jobs.
-- Subject: L'unité (unit) anacron.service a terminé son démarrage
-- L'unité (unit) anacron.service a terminé son démarrage, avec le résultat RESULT.
-- Subject: L'unité (unit) cron.service a terminé son démarrage
-- L'unité (unit) cron.service a terminé son démarrage, avec le résultat RESULT.
nov. 05 09:20:37 debian anacron[615]: Anacron 2.3 started on 2017-11-05
nov. 05 09:20:37 debian anacron[615]: Will run job `cron.daily' in 5 min.
nov. 05 09:20:37 debian anacron[615]: Will run job `cron.weekly' in 20 min.
nov. 05 09:20:37 debian anacron[615]: Will run job `cron.monthly' in 35 min.
nov. 05 09:20:37 debian anacron[615]: Will run job `cron.hourly' in 50 min.
nov. 05 09:20:37 debian anacron[615]: Jobs will be executed sequentially
nov. 05 09:20:37 debian cron[618]: (CRON) INFO (pidfile fd = 3)
nov. 05 09:20:38 debian cron[618]: (CRON) INFO (Running @reboot jobs)
https://www.debian-fr.org/t/collision-d … urly/74984
Dernière modification par grandtoubab (Le 05/11/2017, à 09:26)
Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....
Hors ligne
#8 Le 14/02/2021, à 09:15
- Pollomax
Re : Petit script de maintenance (apt-get). Besoin de retour critique.
Bonjour,
En trouvant votre discussion suite à une recherche de Google, serait-il possible d'ajouté au script une ligne qui recherche et détruit les dossiers et sous dossier vide du dossier Dropbox par exemple ou autres !
Je suis, pas du tout à l'aise avec les scripts je veux bien de l'aide.
Merci POLO
Hors ligne
#9 Le 14/02/2021, à 10:15
- Watael
Re : Petit script de maintenance (apt-get). Besoin de retour critique.
je ne suis pas convaincu par la démarche qui consiste à concaténer des "flags", plutôt que d'utiliser des options traditionnelles.
je propose tout de même cette mise à jour (non testée) :
#!/bin/bash
# You need aptitude to run this script.
# sudo apt-get install aptitude
# Run like this : sudo script_name.sh [flags]
# From root's crontab, use for instance :
# @hourly path/to/script_name.sh wcdpa
# where 'wcdpa' are the flags. Actually, 'cdp' are not needed when 'a' is set.
# then don't forget to send the result via email (configure ssmtp first, for example)
script=$(realpath $0)
dirname=$(dirname $script)
weekly_file="$dirname/.maintenance-last-week"
_all()
{
_update
_upgrade
_distupg
_autoclean
_autoremove
_autopurge
_corbeille
_thumbs
_hometemp
_olderrors
}
_help()
{
echo ">> help"
echo " y : update"
echo " u : update and upgrade"
echo " d : update, upgrade and dist-upgrade"
echo " c : update, autoclean et autoremove"
echo " r : (alias for c)"
echo " p : automatic purge"
echo " i : find and delete thumbnail images"
echo " m : find and delete temp files in the home directory"
echo " s : empty trash"
echo " t : (shortcut to i, m and s at once)"
echo " e : delete old error logs"
echo " : (running the app without any flag equals to running it with all previously named flags excepted d and p ; this does not work if you use the w flag)"
echo " a : (shortcut to all previously named flags at once)"
echo " h : prints this help and exits"
echo " w : exits if the script was already called with this flag on same week. usefull for crontabs."
exit
}
_update()
{
echo ">> mise à jour de l'index des librairies"
echo " apt-get update -y"
apt-get update -y
}
_upgrade()
{
update
echo ">> mise à jour des paquets"
echo " apt-get upgrade -y"
apt-get upgrade -y
}
_distupg()
{
update
upgrade
echo ">> mise à jour intelligente des paquets"
echo " apt-get dist-upgrade -u -y"
# -u demande à l'utilisateur en lui montrant une liste
# -y selectionne oui automatiquement. du coup, c'est un peu inutile de les mettre ensembles.
# mais il me semble que comme ça, on voit la liste, sinon on ne la verrait pas.
# cette étape peut être longue si cela n'a pas été fait depuis longtemps.
apt-get dist-upgrade -u -y
}
_autoclean()
{
echo ">> autosuppression des paquets inutiles"
echo " apt-get autoclean -y"
apt-get autoclean -y
}
_autoremove()
{
update
autoclean
echo ">> autosuppression des dépendances obsolètes"
echo " apt-get autoremove -y"
apt-get autoremove -y
}
_autopurge()
{
echo ">> autosuppression des fichiers de paquets ayant été supprimés mais non purgés"
echo " aptitude purge '~c' -y"
aptitude purge '~c' -y
}
_corbeille()
{
echo ">> vidange de corbeille"
echo " rm -rf ~/.local/share/trash/*"
rm -rf ~/.local/share/trash/*
}
_thumbs()
{
echo ">> suppression des miniatures"
echo " find ~/.thumbnails -type f -atime +7 -delete"
find ~/.thumbnails -type f -atime +7 -delete
}
_hometemp()
{
echo ">> SUPPRESSION DES FICHIERS TEMPORAIRES DU DOSSIER HOME"
echo " find ~/ -name '*~' -exec rm {} \;"
find ~/ -name '*~' -exec rm {} \;
}
_olderrors()
{
echo ">> SUPPRESSION DES LOGS D'ANCIENNES ERREURS"
echo " rm /var/crash/*"
rm /var/crash/*
}
once_a_week()
{
date "+%W" > "$weekly_file"
}
echo ">> SCRIPT DE MAINTENANCE v0.2"
(($#)) || { _all; exit;}
for flag do
for (( i=0; i<"${#flag}"; i++ ))
do
case "${flag:i:1}" in
[Hh])
_help
break;;
[Ww])
once_a_week
if test -f "$weekly_file"
then
dateFile=$(<$weekly_file)
dateToday=$(date "+%W")
test "$dateFile" = "$dateToday" && exit
fi
continue;;
[Yy])
_update
continue;;
[Uu])
_upgrade
continue;;
[Dd])
_distupg
continue;;
[cCrR])
_autoremove
continue;;
[Pp])
_autopurge
continue;;
[Ii])
_thumbs
continue;;
[Mm])
_hometemp
continue;;
[Ss])
_corbeille
continue;;
[Tt])
_thumbs
_hometemp
_corbeille
continue;;
[Ee])
_olderrors
continue;;
[Aa])
_all
continue;;
esac
done
done
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne