Σελίδα 1 από 2

Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 00:27
από Learner
Αυτός ο οδηγός θα σας βοηθήσει να διατηρείτε το Ubuntu σας καθαρό από άχρηστα(αχρείαστα) πακέτα. Δεν είναι κάτι άλλο από 3 απλές εντολές τις οποίες όμως θα τις τοποθετήσουμε μέσα σε ένα script, το οποίο θα εκτελείται μια φορά το μήνα αυτόματα.
Μέσω του script επιτυγχάνεται και καθαρισμός από παλαιούς πυρήνες.

Οι εντολές έχουν παρθεί από εδώ και το συγκεκριμένο script το χρησιμοποιώ εδώ και αρκετούς μήνες χωρίς κάποιο πρόβλημα.
Είναι εντολές γενικής χρήσης και (κατά τη γνώμη μου και εμπειρία μου από την χρήση τους) ακίνδυνες.

Ανοίγουμε ένα τερματικό και εκτελούμε με τη σειρά (μπορείτε να κάνετε τις εντολές copy-paste μια-μια από εδώ στο τερματικό σας).

Κώδικας: Επιλογή όλων
sudo gedit /etc/cron.monthly/cleansystem

Με την παραπάνω εντολή θα ανοίξει ο κειμενογράφος gedit κενός.

Κάνουμε copy-paste μέσα τα παρακάτω

Μορφοποιημένος Κώδικας: Επιλογή όλων
#!/usr/bin/env bash
LOG=/var/log/cleansystem.log
aptget=/usr/bin/apt-get
echo "" >> $LOG
echo "*** $(date -R) ***" >> $LOG
echo "" >> $LOG
$aptget --purge autoremove -y >> $LOG
$aptget autoclean -y >> $LOG
$aptget purge $(dpkg -l | awk '/^rc/ { print $2 }') -y >> $LOG
echo "" >> $LOG
exit 0


[UPDATE 1]
Προστέθηκε στις εντολές η παράμετρος "-y" , διαφορετικά δεν λειτουργεί όπως πρέπει το script.
[UPDATE 2]
Αντικαταστάθηκε η sudo apt-get με $(which apt-get). Η sudo δεν χρειάζεται καθώς εκτελείται ούτως ή άλλως με δικαιώματα διαχειριστή μέσα στο /etc/cron.monthly/ , ενώ για να μην γίνει κάποιο μπέρδεμα με τα relative / absolute paths, η $(which apt-get) είναι καλύτερη.
[UPDATE 3]
Αντικατάσταση της $(which apt-get) με την $aptget.

Αποθηκεύουμε (save) το αρχείο και έπειτα εκτελούμε στο τερματικό
Κώδικας: Επιλογή όλων
sudo chmod 755 /etc/cron.monthly/cleansystem


Αυτό ήταν.
Πλέον, μια φορά το μήνα θα εκτελείται το script στο παρασκήνιο και τα αποτελέσματα θα καταγράφονται στο /var/log/cleansystem.log

Αν θέλετε να το δοκιμάσετε από τώρα εκτελέστε στο τερματικό
Κώδικας: Επιλογή όλων
sudo /etc/cron.monthly/cleansystem

Και μετά δείτε τα αποτελέσματα με
Κώδικας: Επιλογή όλων
cat /var/log/cleansystem.log

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 00:34
από George Pantelis
Ωραίος! :clap:

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 01:01
από proffess77
Εξαιρετικα !! Τα σεβη μου :D :D

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 04:44
από Logan
Μπράβο Νικ! :thumbup:

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 10:11
από konnn
Logan έγραψε:Μπράβο Νικ! :thumbup:

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 10:35
από melitz
You should add a "-y" at the end of every line cause it gets stuck waiting for input. Like this:

sudo apt-get --purge autoremove -y >> $LOG
sudo apt-get autoclean -y >> $LOG
sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') -y >> $LOG

Nice Job! :-)

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 13:11
από Learner
melitz έγραψε:You should add a "-y" at the end of every line cause it gets stuck waiting for input. Like this:

sudo apt-get --purge autoremove -y >> $LOG
sudo apt-get autoclean -y >> $LOG
sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') -y >> $LOG

Nice Job! :-)


Great and correct observation. Fixed.
Thanks.

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 17:00
από Th P
Τα συγχαρηρήρια κι` από μένα!

Ερώτηση (μιας και δεν σκαμπάζω από κώδικα):

Θα μπορούσε το -y να είναι και σε συνεχόμενες εντολές στο συγκεκριμένο script;

πχ:



Κώδικας: Επιλογή όλων
#!/usr/bin/env bash
    LOG=/var/log/cleansystem.log
    echo "" >> $LOG
    echo "*** $(date -R) ***" >> $LOG
    echo "" >> $LOG
    $(which apt-get) sudo apt-get --purge autoremove
    -y sudo apt-get -y clean && sudo apt-get -y autoclean && sudo apt-get -y autoremove
    -y aptitude search '~c' -F '%p' | xargs -n 30 sudo aptitude -y purge
    -y purge $(dpkg -l | awk '/^rc/ { print $2 }') -y >> $LOG
    echo "" >> $LOG
    exit 0

Επίσης στο τέλος μήπως θά έπρεπε να μπει και το
Κώδικας: Επιλογή όλων
sudo apt-get update
;

Φιλικά
Θανάσης Π.

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 17:18
από Learner
Th P έγραψε:Θα μπορούσε το -y να είναι και σε συνεχόμενες εντολές στο συγκεκριμένο script;

Αν θέλεις να κάνεις τις εντολές συνεχόμενες, π.χ σε μια γραμμή πρέπει να τις χωρίσεις, είτε με && είτε με ;
πχ.
Κώδικας: Επιλογή όλων
$(which apt-get) --purge autoremove -y && sudo apt-get -y clean && sudo apt-get -y autoclean && sudo apt-get -y autoremove

To && δηλώνει ότι αν δεν εκτελεστεί η προηγούμενη εντολή σωστά (για κάποιο λόγο) τότε δεν προχωρά στην επόμενη. Τελειώνει εκεί.
Αντίθετα το ; δεν ενδιαφέρεται για τέτοια. Θα προχωρήσει στην εκτέλεση των επόμενων εντολών ακόμη και αν οι προηγούμενες έχουν αποτύχει.

Th P έγραψε:Επίσης στο τέλος μήπως θά έπρεπε να μπει και το

Κώδικας: Επιλογή όλων
sudo apt-get update

Δεν είναι απαραίτητο, αν και νομίζω ότι γίνεται αυτόματα με την sudo apt-get --purge autoremove (δηλαδή η ανανέωση των πηγών λογισμικού, διαβάζει τα σχετικά αρχεία από τα /etc/apt/sources.list και /etc/apt/sources.list.d/ )

Re: Καθαρισμός Ubuntu - script - log

ΔημοσίευσηΔημοσιεύτηκε: 12 Ιούλ 2015, 17:30
από Th P
Ευχαριστώ πολύ για την άμεση απάντηση!

Δεν το ήξερα αυτό για την αυτόματη ανανέωση των πηγών λογισμικού με την sudo apt-get --purge autoremove.
Χρησιμοποιώ εδώ και πολύ καιρό τις εντολές καθαρισμού του medigeek που λέει στο τέλος "μην ξεχάσετε να ανανεώσετε τον apt".
Τώρα θα δοκιμάσω και το δικό σου script και απ`ότι φαίνεται θα μείνει για περιοδική manual χρήση μόνο το sudo apt-get upgrade && sudo apt-get dist-upgrade