11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

#<br />

# Comunque, entrambi i seguenti avrebbero funzionato.<br />

# find /proc/$1/exe -printf ’%l\n’<br />

# lsof -aFn -p $1 -d txt | sed -ne ’s/^n//p’<br />

# Commenti aggiuntivi <strong>di</strong> Stephane Chazelas.<br />

exit 0<br />

Esempio 27-3. Stato <strong>di</strong> una connessione<br />

#!/bin/bash<br />

NOMEPROC=pppd # Demone ppp<br />

NOMEFILEPROC=status # Dove guardare.<br />

NONCONNESSO=65<br />

INTERVALLO=2 # Aggiorna ogni 2 secon<strong>di</strong>.<br />

pidnum=$( ps ax | grep -v "ps ax" | grep -v grep | grep $NOMEPROC \<br />

| awk ’{ print $1 }’ )<br />

Capitolo 27. /dev e /proc<br />

# Ricerca del numero del processo <strong>di</strong> ’pppd’, il ’demone ppp’.<br />

# Occorre eliminare le righe del processo generato dalla ricerca stessa.<br />

#<br />

# Comunque, come ha evidenziato Oleg Philon,<br />

#+ lo si sarebbe potuto semplificare considerevolmente usando "pidof".<br />

# pidnum=$( pidof $NOMEPROC )<br />

#<br />

# Morale della favola:<br />

# Quando una sequenza <strong>di</strong> coman<strong>di</strong> <strong>di</strong>venta troppo complessa, cercate una<br />

#+ scorciatoia.<br />

if [ -z "$pidnum" ] # Se non c’è il pid, allora il processo non è<br />

#+ in esecuzione.<br />

then<br />

echo "Non connesso."<br />

exit $NONCONNESSO<br />

else<br />

echo "Connesso."; echo<br />

fi<br />

while [ true ] # Ciclo infinito. Qui lo script può essere migliorato.<br />

do<br />

if [ ! -e "/proc/$pidnum/$NOMEFILEPROC" ]<br />

# Finché il processo è in esecuzione, esiste il file "status".<br />

then<br />

echo "Disconnesso."<br />

exit $NONCONNESSO<br />

fi<br />

509

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!