@nutria ha scritto:
Ciao a tutti,
dietro suggerimento dell' ADU-Team condivido con voi i miei script che utilizzo per gestire i fastidiosi crash del nostro amico aMule.Di solito accade spesso (Murphy's law) che appena si esce di casa lasciando il mulo acceso, nel giro di 10 minuti questo vada in crash. Addio sogni di trovare tanta roba al rientro a casa....
Per questo ho realizzato due script sh per il lancio e la gestione del mulo. Ho posizionato gli script e relativi file di log nella directory Script all'interno di .aMuleAdunanza
Fase 0 - Preparazione
Andate nella directory del vostro utente.... nel mio caso nutria :):
cd /home/nutria/.aMuleAdunanzA/
e create la nuova directory Script
mkdir Script
Script 1: Lanciatore infinito
All'interno della directory
cd /home/nutria/.aMuleAdunanzA/Script
create lo script
vi emuleStart.sh
incollate il testo seguente
#!/bin/bash while `/bin/true`; do /usr/bin/amule>/home/nutria/.aMuleAdunanzA/Script/logEmule.log 2>>/home/nutria/.aMuleAdunanzA/Script/logEmule.log echo "#### Rilevato crash - riavvio `date` ####" echo " " > /home/nutria/.aMuleAdunanzA/Script/logEmule.log done
e salvate digitando ":wq"
Date ora i permessi di esecuzione allo script
chmod +777 emuleStart.sh
Lo script per lanciare aMule che gestisce i crash è pronto. Create un link/collegamento sul desktop e il gioco è fatto. Quando c'è da lanciare aMule fatelo usando questo script. Vi apparira un messaggio di come volete eseguire lo script, io seleziono "Eseguire nel terminale". In questo modo quando volete chiudere amule, basterà chiudere la finestra del terminale.
Se durante l'esecuzione amule si chiude inaspettatamente il ciclo infinito dello script lo farà ripartire in automatico. Tutti i log di esecuzione dello script vengono salvati nella directory precedentemente creata nel file "/home/nutria/.aMuleAdunanzA/Script/logEmule.log". Questo Log verrà usato nel secondo script di controlloScript 2: Crash Freeze
Mi sono accorto che ultimamente aMule va in crash ma l'applicativo non si chiude. Nei log appare un messaggio di errore tipo il seguente:E' stato riscontrato un errore che ha causato il crash di aMule AdunanzA. Ricordate che il team di aMule ufficiale NON supporta in alcun modo AdunanzA, quindi NON spedite loro il seg. log. Il log potrebbe essere utile solo agli sviluppatori di aMule AdunanzA accompagnato da informazioni quali: - la versione di Adunanza attuale ovvero aMule 2.3.1 - AdunanzA 2012.1; - il sistema operativo (Linux/MacOS/FreeBSD/Windows varie ed eventuali), la distribuzione e la versione; - la descrizione (il piu' dettagliata possibile) delle azioni che hanno portato al crash. Sappiate comunque che dump originati da eseguibili compilati SENZA le opzioni di debug o CON OTTIMIZZAZIONI abilitate NON saranno presi in considerazione (sono praticamente inutili). Se possibile provate a generare un vero backtrace come descritto in: http://wiki.amule.org/index.php/Backtraces ----------------------------=| BACKTRACE FOLLOWS: |=---------------------------- Current version is: aMuleAdunanzA MOD based on aMule 2.3.1 compiled with wxGTK2 v2.8.12 AdunanzA 2012.1 Running on: Linux 3.16.0-38-generic x86_64
La cosa è particolarmente odiosa perchè il nostro amico mulo non scarica più e si freeza. Non chiudendosi il precedente script dello step1 non serve a nulla.
Da qui nasce il mio secondo script che ho schedulato ogni 2 minuti nella crontab :-). Quando aMule non è in attività e state usando il pc per altro non è un problema perchè non ha effetti collaterali.
All'interno della directory
cd /home/nutria/.aMuleAdunanzA/Script
create lo script
vi emuleCTRL.sh
incollate il testo seguente
#!/bin/sh export pathFileLog=/home/nutria/.aMuleAdunanzA/Script/logEmule.log export controllore=`grep "stato riscontrato un errore che ha causato il crash di aMule AdunanzA" $pathFileLog | wc -l` export testdate="`date "+%Y-%m-%d %H:%M:%S"`" echo "$testdate-Righe con errore :"$controllore if [ "$controllore" -ne "0" ] ; then echo "$testdate-Crash AdunanzaEmule rilevato: uccido il vecchio processo con pid -"`pidof /usr/bin/amule`"-" pidof /usr/bin/amule | `awk '{print "kill -9 "$0}'` else echo "$testdate-Tutto ok" fi echo "$testdate-########################"
e salvate digitando ":wq"
Date ora i permessi di esecuzione allo script
chmod +777 emuleCTRL.sh
Lo script va poi schedulato nel crontab. Da linea di comando digitate
crontab -e
ed inserite la seguente riga:
*/2 * * * * /home/nutria/.aMuleAdunanzA/Script/eMuleCTRL.sh > /dev/null 2>/dev/null #>/dev/null 2>&1
Lo script quindi gira ogni due minuti, verifica nel file di log dello step 1 se è presente una parte del messaggio di errore che manda in crash+freeze aMule, se si uccide il processo. Lo script della fase1 ovviamente rilevando la chiusura di aMule lo farà ripartire. Gioco fatto.
L'ho testato per un po di giorni e tutto funziona bene. Lo so andrebbe cercata la causa, ma ci vuole troppo, cosi mi sono arrabattato. Ovviamente se avete migliorie o varianti fatemi sapere. Consigli costruttivi sempre ben accetti..
ciao a tutti e buon uso aMuleAdunanza
Messaggi: 1
Partecipanti: 1