Pagina 1 di 1

Problema con script per demone ciclico

Inviato: mercoledì 13 giugno 2012, 18:13
da zeatles
Ciao a tutti, premetto che sono un neofita di linux ma per necessità di lavoro ho realizzato un piccolissimo script su un dispositivo di IO che utilizza un core linux e che controlla ogni 4-5 secondi quante istanze di un processo ci sono e se tale numero supera 4 il demone scrive una data in un logfile e killa tutte le istanze altrimenti si mette in sleep per 4 secondi e poi riparte (tutto cioè è racchiuso dentro ad un while).
Lo script sembra funzionare correttamente solo che mi sono accorto che nonostante non faccia praticamente niente fa salire il carico della cpu e man mano che passano le ore e i giorni occupa sempre più memoria senza rilasciarla e non capisco come mai. Al contrario ho realizzato un processo che controlla se un altro processo è attivo e se non lo è lo richiama altrimenti anch'esso si mette in attesa per 4-5 secondi e poi riparte. Solo che in questo ultimo caso non ho ne una crescente occupazione di memoria ne tanto meno un carico elevato sulla CPU.
Vi allego le 2 righe di codice dello script in modo da capire se sbaglio qualcosa e se sapete consigliarmi su come poterlo modificare.

#!/bin/bash
while[1]
do
X=$(ps | grep -v grep | grep ./home/nome_processo | wc -l)
if [$X -gt 4]
then
/bin/date >> /home/log.txt
killall -9 pidof nome_processo
fi
sleep 4
done

Grazie a tutti
Ciao

Re: Problema con script per demone ciclico

Inviato: giovedì 14 giugno 2012, 15:24
da bingel
...dubito che il codice che hai postato funzioni correttamente. Questo invece dovrebbe funzionare:

Codice: Seleziona tutto

#!/bin/bash
while true; do
  x=$(ps -ef | grep -v grep | grep './home/nome_processo' | wc -l)
  if [[ $x -gt 4 ]]; then
    /bin/date >> /home/log.txt
    killall -9 nome_processo
  fi
  sleep 4
done 

Re: Problema con script per demone ciclico

Inviato: giovedì 14 giugno 2012, 16:57
da zeatles
Ciao bingel, grazie per il consiglio. Il problema non è tanto se lo script funziona (ho provato più volte e sembra funzionare senza problemi), quanto sapere il motivo per cui mi occupa il processore in modo eccessivo e più importante ancora causa una occupazione di memoria sempre maggiore che non si libera mai.
Non viene in mente niente a nessuno?

Re: Problema con script per demone ciclico

Inviato: giovedì 14 giugno 2012, 17:18
da Laycastle
Ciao,
quello postato in precedenza contiene diversi errori, io farei una prova quello di bingel e verificare se da gli stessi problemi.

p.s. non so di che genere di dispositivo stiamo parlando, ma se, per caso, hai a disposizione un demone cron potresti gestire il tutto in maniera molto più flessibile. :)

p.p.s
@bingel grep -c...!! :asd:

Re: Problema con script per demone ciclico

Inviato: giovedì 14 giugno 2012, 20:37
da bingel
Non so come tu abbia verificato il funzionamento del tuo script ma a parte i vari dettagli che ho aggiustato (senza tali aggiustamenti probabilmente funzionerebbe lo stesso), la cosa importante che mancava era il parametro "-ef" del comando "ps". Senza tale parametro mi pare quasi impossibile che il risultato possa essere quello voluto.

Prova semplicemente ad eseguire un

Codice: Seleziona tutto

ps
da terminale (senza alcun parametro) e ti renderai conto da solo che il relativo output è del tutto inutile ai tuoi fini.