Script restart process if die

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.

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.