Archivi tag: grep

Script Bash per controllare lo stato di un processo

Quando si schedulano dei job su cron è opportuno distanziarli tra di loro dal punto di vista temporale, in quanto la sovrapposizione degli stessi potrebbe portare a comportamenti inaspettati. Tale regola andrebbe seguita sempre e comunque, soprattutto se i job si occupano di parsare dei dati e di inserirli dentro un database.

cron, job, parser, ps aux, wc -l, grep, output, gt, bash, script

Dopo questa breve premessa, ecco il codice che utilizzo per il suddetto scopo:

#!/bin/bash

ESEC=`ps aux | grep Parser | wc -l`
if [ $ESEC -gt 1 ]; then #la prima riga e' il grep stesso
echo "Parser is still running.";
exit 0;
fi

Lo scrip in questione è abbastanza semplice. Dapprima lancia un ps aux | grep Parser, dove Parser è il nome del processo di cui voglio controllare lo stato. Se tale processo non è in esecuzione, l’output del comando conterrà solo ed esclusivamente la riga relativa al grep. Dunque, se il numero di righe ricavate mediante un wc -l è strettamente maggiore di uno, vuol dire che una o più istanze del processo è in esecuzione (lo scrip esce). Viceversa, lo scrip continua in quanto nessuna istanza è attualmente attiva.

Alla prossima.

grep -H e grep -v

Molto spesso mi capita di dover cercare una determinata stringa su più file presenti in una directory. Per fare ciò il comando cat * | grep stringa non è sufficiente, in quanto non mi dice in quali file si trova la stringa che sto cercando.

 

grep.jpg

 

A tal proposito è sufficiente utilizzare soltanto il comando grep con la flag -H:

nightfly@nightbox:~$ grep -H prova *

oppure

nightfly@nightbox:~$ grep -H prova /directory/name

Un’altra flag che spesso mi torna utile è quella relativa alla ricerca inversa:

nightfly@nightbox:~$ grep -v prova nomefile

così facendo individuerò tutte le righe del file in cui non è presente la parola prova.

Tenete bene a mente entrambi i comandi, sicuramente potranno servirvi.

A presto.