Ultimamente rtorrent mi stava dando qualche problema, i limiti fisici del vecchio raspberry PI prima versione non mi danno spazio per gestire la memoria così succede che rtorrent muore inaspettatamente.
Caught internal_error: DhtServer::event_write called but both write queues are empty. /usr/lib/arm-linux-gnueabihf/libtorrent.so.21(_ZN7torrent14internal_error10initializeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x1c0) [0xb6cdcd7c] rtorrent(_ZN7torrent14internal_errorC1EPKc+0x9c) [0x7fa58] /usr/lib/arm-linux-gnueabihf/libtorrent.so.21(+0x98728) [0xb6d50728] /usr/lib/arm-linux-gnueabihf/libtorrent.so.21(_ZN7torrent9PollEPoll7performEv+0x118) [0xb6cf59bc] /usr/lib/arm-linux-gnueabihf/libtorrent.so.21(_ZN7torrent9PollEPoll7do_pollExi+0x78) [0xb6cf5adc] /usr/lib/arm-linux-gnueabihf/libtorrent.so.21(_ZN7torrent11thread_base10event_loopEPS0_+0x174) [0xb6d3289c] rtorrent() [0x1e660] /lib/arm-linux-gnueabihf/libc.so.6(__libc_start_main+0x114) [0xb68dd740]
Non è una bella situazione dato che l’unico accesso per riavviare rtorrent deve avvenire da SSH e spesso non mi è possibile inoltre possono passare diverse ore se non giorni prima che me ne renda conto.
La soluzione era avviare rtorrent con uno script in grado di capire se era attivo .
A questo punto avviamo rtorrent da uno script che eseguiremo direttamente dalla console, questo lancerà immediatamente il programma e se questo dovesse terminare sia volontariamente che in modo inaspettato dopo un tempo prestabilito andrà a fare un nuovo avvio.
Andiamo a creare il nostro rtorrent.sh, rendiamolo eseguibile e all’interno mettiamo quanto sotto riportato.
while true do rtorrent sleep 30 done
Tempo di attesa per il riavvio= sleep che per noi sono 30 secondi
Ora da console
$ ./rtorrent.sh
Una specie di , lancialo e se termina lo riavvi
ATTENZIONE: nel caso uscissimo volontariamente dobbiamo anche terminare lo script entro il tempo prestabilito o rtorrent verrà avviato.