Firefox, og Thunderbird: Rengøring i sqlite3 database filer

Dette forum bruges på EGET ANSVAR til at lege med scripts og andre ting med risiko for at beskadige sit eget og andres systemer.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Firefox, og Thunderbird: Rengøring i sqlite3 database filer

Indlæg af lath »

Her lidt om hvordan man rydder op (laver en VACUUM) af sqlite3 database filer som bruges af Firefox og Thunderbird.
Hvorfor? Opstart, søgninger, og den slags går hurtigere.
Har du ikke så meget ubrugt plads i sqlite3 filerne som mig er der nok ikke noget at hente.

Der er mange andre programmer der bruger sqlite3 database filer, fordi sqlite3 er nyttig til at gemme opsætning og andre nyttige ting i letvægtsdatabasen.

Før du går igang
Du skal have sqlite3 porgrammet ind, så kør:

Kode: Vælg alt

sudo apt-get -y install sqlite





En lille stump bash shell script
Det hele baserer sig på følgende lille stump bash shell script, som du kan afvikle for alle programmer der bruger sqlite3 database filer:

Kode: Vælg alt

for F in $(find . -type f -name '*.sqlite' -print)
do
sqlite3 $F "VACUUM;"
done

Før du bruger den:
Der er dog 1 krav du altid skal overholde, og det er at programmet ikke under nogen omstændigheder må køre.




Firefox scriptet
(bash shell) scriptet til firefox ser således ud:

Kode: Vælg alt

#!/bin/bash

proc="$(ps aux | grep $USER | grep -v $0 | grep firefox | grep -v grep)"
if [ "$proc" != "" ]
then
        echo "Firefox skal lukkes ned før du kan bruge dette script.\n"
        echo "You has to shutdown Firefox first, before you can use this script!\n"
        exit 1
fi

curdir=$(pwd)

for dir in $(cat ~/.mozilla/firefox/profiles.ini | grep Path= | sed -e 's/Path=//')
do
        cd ~/.mozilla/firefox/$dir 2>/dev/null
        if [ $? == 0 ]
        then
                echo "i'm in $(pwd)"
                echo -e "    kører...\n"
                echo -e "    running...\n"

                for F in $(find . -type f -name '*.sqlite' -print)
                do
                        sqlite3 $F "VACUUM;"
                done

                echo -e "færdig i $(pwd) ...\n"
                echo -e "done in  $(pwd) ...\n"
        else
                echo -e "\n  Mappen $dir findes ikke !!!!\n"
                echo -e "\n  The directory $dir does not exists !!!!\n"
        fi
done
echo "Scriptet er færdig med at arbejde, du kan godt starte Firefox igen";
echo "The script had done its job, you can start Firefox again";

cd $curdir





Thunderbird scriptet
bash shell scriptet til thunderbird ser således ud:

Kode: Vælg alt

#!/bin/bash

proc="$(ps aux | grep $USER | grep -v $0 | grep thunderbird | grep -v grep)"
if [ "$proc" != "" ]
then
        echo "Thunderbird skal lukkes ned før du kan bruge dette script.\n"
        echo "You has to shutdown Thunderbird first, before you can use this script!\n"
        exit 1
fi

curdir=$(pwd)

for dir in $(cat ~/.thunderbird/profiles.ini | grep Path= | sed -e 's/Path=//')
do
        cd ~/.thunderbird/$dir 2>/dev/null
        if [ $? == 0 ]
        then
                echo "i'm in $(pwd)"
                echo -e "    kører...\n"
                echo -e "    running...\n"

                for F in $(find . -type f -name '*.sqlite' -print)
                do
                        sqlite3 $F "VACUUM;"
                done

                echo -e "færdig i $(pwd) ...\n"
                echo -e "done in  $(pwd) ...\n"
        else
                echo -e "\n  Mappen $dir findes ikke !!!!\n"
                echo -e "\n  The directory $dir does not exists !!!!\n"
        fi
done
echo "Scriptet er færdig med at arbejde, du kan godt starte Thunderbird igen";
echo "The script had done its job, you can start Thunderbird again";

cd $curdir


Den opmærksomme læser vil måske have bemærket at hver af de 2 scripts ikke nøjes med kun at tage din *.default mappe, men alle profiles for henholdsvis Firefox og Thunderbird.
(Hver bruger kan have mere end 1 Frefox/Thunderbird profil.)

Noget jeg overvejer at tage i brug eksempler på profiler kan være at du deler dem op i grupper, for mit vedkommende er en separat profil for softwareudvikling oplagt, men da jeg pure nægter at gøre det arbejde manuelt (hvorfor skal jeg gøre det, når det er noget computeren kan lave?) er der muligt emne til et nyt nyttigt program der er specialiseret i det job.
I et sådant program kunne man bruge et websteds URL, og et tag til at udpege information som man så kan gøre noget med. For ubuntu danmark er det: URLen er ubuntudanmark.dk, og et tag kunne være ubuntu.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags