View Full Version : Aiuto: creare uno script per UMOUNT automatico...
ciao a tutti, rieccomi
avrei bisogno di un serio aiuto per create uno script di UMOUNT... speigo meglio:
Ho programmato frenass con Cron, in modo che ad una X ora inizi il backup con Rsync; ecco il problema, a quel punto dovrei Togliere il disco per portarmelo via... ma il disco deve essere smontato...
Quindi mi servirebbe uno script o una riga di comando da programmare con Cron che mi faccia un check dell'HD USB e, se inutilizzato per TOT tempo, lo smonti!
chi mi aiuta..? io arrivo solo all'ultima fase, al comando secco da shell per lo smontaggio del disco
umount -t ufs /dev/da0p1 /mnt/USBstick
mi manca la prima parte....
Grazie...
perchè nel cron non fai una cosa tipo
backup && umount && qualche led che lampeggia (per indicare che è tutto a posto) ?
chiedo scusa se ho detto una cavolata, ma cron praticamente so solo cosa sia....
perchè nel cron non fai una cosa tipo
backup && umount && qualche led che lampeggia (per indicare che è tutto a posto) ?
chiedo scusa se ho detto una cavolata, ma cron praticamente so solo cosa sia....
... magari! è che non ho idea da che parte iniziare... :( :cry:
#!bin/sh
echo "up !"
chmod +x /HwUpgradepost/up.sh
/HwUpgradepost/up.sh
Ovvero
up !
megamitch
19-10-2009, 10:54
Ciao,
provo a darti qualche spunto per trovare una soluzione...
Potresti ad esempio verificare che il processo che effettua il backup non sia attivo prima di smontare il disco.
Una altra ipotesi di soluzione potrebbe essere quella di mettere all'inizio e alla fine del processo di backup un'instruzione che crei un file in una certa posizione prima di iniziare il backup e lo elimini al termine della procedura, se va a buon fine. Verificando la presenza del file sai se il backup è in corso oppure no.
Byez
M.
Ciao,
provo a darti qualche spunto per trovare una soluzione...
Potresti ad esempio verificare che il processo che effettua il backup non sia attivo prima di smontare il disco.
Una altra ipotesi di soluzione potrebbe essere quella di mettere all'inizio e alla fine del processo di backup un'instruzione che crei un file in una certa posizione prima di iniziare il backup e lo elimini al termine della procedura, se va a buon fine. Verificando la presenza del file sai se il backup è in corso oppure no.
Byez
M.
Ciao, grazie per l'input... la prima ipotesi mi piace di più... è la realizzabilità che mi preoccupa al momento... non so da che parte iniziare...
Grazie
Mai usato frenass quindi non so come funziona ma giusto a naso manderei in cron uno script che fa l' umount finito il lavoro di frenass
#!/bin/bash
frenass
umount -t ufs /dev/da0p1 /mnt/USBstick
Se ci fossero problemi con la sincronizzazione puoi usare sleep, mentre per controllare se il processo di cron è attivo basta un ps e un grep.
Comunque in ogni caso se non lo killi non credo ti smonti il disco prima di finire il lavoro :O
Mai usato frenass quindi non so come funziona ma giusto a naso manderei in cron uno script che fa l' umount finito il lavoro di frenass
#!/bin/bash
frenass
umount -t ufs /dev/da0p1 /mnt/USBstick
Se ci fossero problemi con la sincronizzazione puoi usare sleep, mentre per controllare se il processo di cron è attivo basta un ps e un grep.
Comunque in ogni caso se non lo killi non credo ti smonti il disco prima di finire il lavoro :O
OTTIMO! è quello che volevo! lo faccio ripetere ad intervalli regolari di 10-15 min..... ma non è freenas il processo da attendere... è Rsync.
Ma mi manca up pezzo nel tuo script... quello che + mi interessava... ovvero quel "fa l' umount finito il lavoro di frenass"
come faccio a fargli fare questo ceck... ? dici che non importa? gli mando in sequenza il comando di u-mount a ripetizione fino a che non ha finito?
Grazie!
ciao
eclissi83
21-10-2009, 16:37
in effetti, il modo piu' pulito e' quello di fare uno script di questo genere (se prendiamo rsync come esempio):
il codice potrebbe essere molto piu' raffinato, con l'uso di variabili ed altro, ma a te serve solo come input, giusto? :p
!#/bin/bash
rsync -OPZIONI SORGENTE DESTINAZIONE
sleep 15
sync #giusto essere sicuri che faccia l'operazione di sync
umount -t ufs /dev/da0p1 /mnt/USBstick
se poi il tuo problema e' sapere QUANDO puoi staccare il disco, puoi farti mandare un'email aggiungendo una riga di questo tipo alla fine dello script
echo "stacca il disco" | mail -s "Backup log" user@dominio
Mah secondo me non serve perchè se ad esempio cerco di smontare una chiavetta usb mentre sta copiando mi dice "ehi!aspetta un po' che finisca di copiare" e solo finito la smonta in automatico, quindi penso che mettere verifiche non serva.
In caso sarà qualcosa del genere
#!/bin/bash
#variabili
TEMPO='60' #tempo in secondi
PROCESSO='rsync' #o cron vedi tu
#
i=1
while [ $i = 1 ]; do
if ps ax | grep -v grep | grep $PROCESSO > /dev/null
then
echo "processo in corso"
else
umount -t ufs /dev/da0p1 /mnt/USBstick
fi
sleep $TEMPO
done
... buttato giù un po' alla buona per darti un' idea ma ti avverto che l'ho scritto senza verificarlo perchè ora vado di fretta, quindi forse ci devi mettere le mani :O
Comunque credo che sia uno script inutile, con le 2-3 righe che ti abbiamo suggerito secondo me te la cavi. Facci sapere :)
eclissi83
22-10-2009, 00:56
Mah secondo me non serve perchè se ad esempio cerco di smontare una chiavetta usb mentre sta copiando mi dice "ehi!aspetta un po' che finisca di copiare" e solo finito la smonta in automatico, quindi penso che mettere verifiche non serva.
non lo so, considerato il device che deve smontare penso che il sistema sia un *BSD che non mi pare faccia queste cose... buh comunque se ci viene spiegato meglio cosa deve fare riusciamo ad aiutarlo in modo piu' mirato.
ciao!
anzitutto grazie avvero! è l'ultimo tassello del mio "server files" e no backup, no party!
allora, in linea di massima vanno bene entrambi, faccio un po di prove e vedo come funziano!
Si, FreeNas è un BSD, quindi un po' più noiosetto per le stringhe...
benissimo anche la funzione di Mail a fine esecuzione...
X Mr Bano: nel tuo script cosa significa "i=1" al primo rigo e il "fi" al penultimo rigo?
#!/bin/bash
#variabili
TEMPO='60' #tempo in secondi
PROCESSO='rsync' #o cron vedi tu
#
i=1
while [ $i = 1 ]; do
if ps ax | grep -v grep | grep $PROCESSO > /dev/null
then
echo "processo in corso"
else
umount -t ufs /dev/da0p1 /mnt/USBstick
fi
sleep $TEMPO
done
Grazie ancora ad entrmbi! stasera provo e vi aggiorno
ciao
eclissi83
22-10-2009, 15:48
X Mr Bano: nel tuo script cosa significa "i=1" al primo rigo e il "fi" al penultimo rigo?
ti consiglio una veloce lettura di Advanced Bash Guide (c'e' anche in italiano)...
in ogni caso "i" e' una variabile e "fi" serve per chiudere il ciclo "if".
Grazie ancora ad entrmbi! stasera provo e vi aggiorno
ciao
prego, ciao :)
Ottimo! Mi fa piacere dai che vada tutto! :)
Mai usato frenass quindi non so come funziona ma giusto a naso manderei in cron uno script che fa l' umount finito il lavoro di frenass
#!/bin/bash
frenass
umount -t ufs /dev/da0p1 /mnt/USBstick
Se ci fossero problemi con la sincronizzazione puoi usare sleep, mentre per controllare se il processo di cron è attivo basta un ps e un grep.
Comunque in ogni caso se non lo killi non credo ti smonti il disco prima di finire il lavoro :O
Mi autoquoto per rimproverarmi!
Che asino, scambiare un sistema operativo per un programma :O
Se il prossimo modello lo dotano della scheda di rete mi prendo questo:
http://www.toyx.it/open2b/var/catalog/b/4196.jpg
Ottimo! Mi fa piacere dai che vada tutto! :)
Mi autoquoto per rimproverarmi!
Che asino, scambiare un sistema operativo per un programma :O
Se il prossimo modello lo dotano della scheda di rete mi prendo questo:
http://www.toyx.it/open2b/var/catalog/b/4196.jpg
:sofico: ... ridiamoci sopra, ma se bastano 100mb di spazio... forse entra pure lì !
vi tengo aggiornati
Grazie
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.