fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« inserita: 06 Gennaio, 2009, 19:02:38 » |
|
Ciao
esiste un comando che permetta di sapere se un file è stato modificato?
Grazie
|
|
|
|
« Ultima modifica: 08 Gennaio, 2009, 16:28:57 da fiamma »
|
Registrato
|
|
|
|
KabaL_ScarS
Coraggioso Chiacchierone
Non Connesso
Sesso: 
Messaggi: 648
Media messaggi
|
 |
« Risposta #1 inserita: 06 Gennaio, 2009, 19:10:30 » |
|
Specifica meglio che intendi per modificato. Normalmente si usa MD5 per controllare che un file in downlodato sia identico all'originale, classico caso il download delle ISO, ma puoi replicarlo anche per i file nel tuo pc. Oppure ci sono dei software fatti ad hoc che prima fanno un immagine di controllo e poi se cambia un file ti viene segnalato.
|
|
|
|
|
Registrato
|
|
|
|
zaxxon
Novello Novizio
Non Connesso
Messaggi: 182
Media messaggi
|
 |
« Risposta #2 inserita: 06 Gennaio, 2009, 19:11:54 » |
|
Se hai l'originale puoi confrontarlo con un altro con il comando diff.
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« Risposta #3 inserita: 06 Gennaio, 2009, 19:52:25 » |
|
Allora 1) lancio lo script con dentro il comando che controlla se un certo file è stato modificato 2) faccio quello che devo fare con un programma, quando viene modificato quel certo file il comando che ho lanciato prima mi deve avvertire della modifica. (l'avvertimento lo farò fare a libnotify) spero di essermi spiegato bene 
|
|
|
|
|
Registrato
|
|
|
|
Zoff
Moderatore Globale
Illuminato Imbonitore
   
Non Connesso
Sesso: 
Messaggi: 23.256
Media messaggi
Ubuntu user #24913 :D :D :D Linux user #471539
|
 |
« Risposta #4 inserita: 06 Gennaio, 2009, 19:54:05 » |
|
Se invece vuoi fare un controllo temporale puoi sare il comando stat stat nomeFile | grep -i modify mostra la data di ultima modifica. ciauz
|
|
|
|
|
Registrato
|
|
|
|
l3on
Amministratore del Wiki
Moderatore Globale
Pimpante Precettore
   
Non Connesso
Sesso: 
Messaggi: 5.490
Media messaggi
Mono+Gtk# -> Forte!
|
 |
« Risposta #5 inserita: 06 Gennaio, 2009, 20:22:11 » |
|
Se invece vuoi fare un controllo temporale puoi sare il comando stat stat nomeFile | grep -i modify mostra la data di ultima modifica. ciauz Al dire il vero il modo migliore di controllare l'ora dell'ultima modifica del file è dare il comando: stat -c %y NOMEFILE Le pipe costano parecchio a livello computazionale. Ciao.
|
|
|
|
|
Registrato
|
|
|
|
Zoff
Moderatore Globale
Illuminato Imbonitore
   
Non Connesso
Sesso: 
Messaggi: 23256
Media messaggi
Ubuntu user #24913 :D :D :D Linux user #471539
|
 |
« Risposta #6 inserita: 06 Gennaio, 2009, 20:41:54 » |
|
Ecco uno script che dovrebbe fare quello che chiedi: #! /bin/bash ultimaModifica=`stat -c %y $1`
while true do update=`stat -c %y $1` if [ "$ultimaModifica" != "$update" ] ; then ultimaModifica=`stat -c %y $1` echo "E' cambiata! "$ultimaModifica fi sleep 2 done Se invece vuoi fare un controllo temporale puoi sare il comando stat stat nomeFile | grep -i modify mostra la data di ultima modifica. ciauz Al dire il vero il modo migliore di controllare l'ora dell'ultima modifica del file è dare il comando: stat -c %y NOMEFILE Le pipe costano parecchio a livello computazionale. Ciao. Grazie dell'info 
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« Risposta #7 inserita: 06 Gennaio, 2009, 21:10:20 » |
|
Direi ottimo Il problema che al posto di echo "E' cambiata! "$ultimaModifica metto notify-send --icon=$HOME/mpla/Folder.jpg --expire-time=5000 'Playing' "$DE" e continua ad apparire la notifica.
|
|
|
|
|
Registrato
|
|
|
|
Zoff
Moderatore Globale
Illuminato Imbonitore
   
Non Connesso
Sesso: 
Messaggi: 23256
Media messaggi
Ubuntu user #24913 :D :D :D Linux user #471539
|
 |
« Risposta #8 inserita: 06 Gennaio, 2009, 21:24:01 » |
|
Direi ottimo Il problema che al posto di echo "E' cambiata! "$ultimaModifica metto notify-send --icon=$HOME/mpla/Folder.jpg --expire-time=5000 'Playing' "$DE" e continua ad apparire la notifica. Nel senso che mostra sempre il messaggio? Ma su che file fai il controllo?
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« Risposta #9 inserita: 06 Gennaio, 2009, 21:27:00 » |
|
Sul file c'è l'output di mplayer, quindi al cambio di canzone viene aggiunto altro output. Alla modifica del file parte libnotify con scritto i tag della canzone in riproduzione.
|
|
|
|
|
Registrato
|
|
|
|
Zoff
Moderatore Globale
Illuminato Imbonitore
   
Non Connesso
Sesso: 
Messaggi: 23256
Media messaggi
Ubuntu user #24913 :D :D :D Linux user #471539
|
 |
« Risposta #10 inserita: 06 Gennaio, 2009, 21:28:30 » |
|
Sul file c'è l'output di mplayer, quindi al cambio di canzone viene aggiunto altro output. Alla modifica del file parte libnotify con scritto i tag della canzone in riproduzione.
Sicuro che non ci siano scritture più frequenti ma che non applicano modifiche? Prova a mostrare la data di ultima modifica e controlla se l'ora cambia...
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« Risposta #11 inserita: 06 Gennaio, 2009, 21:32:29 » |
|
Ci riguardo ma passando l'opzione -quiet scrive delle info su se stesso e poi i tag della canzone. Durante le mie prove tenevo il file aperto e si modificava solo al cambio di canzone.
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« Risposta #12 inserita: 06 Gennaio, 2009, 21:41:32 » |
|
La notifica continua anche se il file da monitorare lo cancello. Il processo poi lo devo chiudere da gnome-system-monitor.
|
|
|
|
|
Registrato
|
|
|
|
Zoff
Moderatore Globale
Illuminato Imbonitore
   
Non Connesso
Sesso: 
Messaggi: 23256
Media messaggi
Ubuntu user #24913 :D :D :D Linux user #471539
|
 |
« Risposta #13 inserita: 06 Gennaio, 2009, 21:43:10 » |
|
La notifica continua anche se il file da monitorare lo cancello. Il processo poi lo devo chiudere da gnome-system-monitor.
In teoria con Ctrl+C o Ctrl+Z dovrebbe chiudersi... Boh strano... Prova a postare il codice completo che usi...
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« Risposta #14 inserita: 06 Gennaio, 2009, 21:52:54 » |
|
Questo codice lo uso con BUC, dentro ad un tag "button" mkfifo $HOME/mpla/foo cd "$folder" ls *.mp3 *.flac *.ape *.wma *.wv *.MP3 *.wav > .prova.m3u convert Folder.jpg -resize 90x $HOME/mpla/Folder.jpg mplayer -quiet -playlist .prova.m3u -input file=$HOME/mpla/foo > .file.txt & ls *.mp3 *.flac *.ape *.wma *.wv *.MP3 *.wav if grep -q * .file.txt then cp .file.txt file.txt DE=`grep -q 'Title:' file.txt` echo "$DE" TE=`basename "$folder"` notify-send --icon=$HOME/mpla/Folder.jpg --expire-time=5000 "$TE" "$DE" else sleep 2 cp .file.txt file.txt DE=`grep -q 'Title:' file.txt | sed s/Title://g`
echo "$DE" TE=`basename "$folder"` notify-send --icon=$HOME/mpla/Folder.jpg --expire-time=5000 "$TE" "$DE" fi
ultimaModifica=`stat -c %y .file.txt`
while true do update=`stat -c %y .file.txt`
if [ "$ultimaModifica" != "$update" ] ; then notify-send --icon=$HOME/mpla/Folder.jpg --expire-time=5000 'Playing' "$DE" fi sleep 2 done &
|
|
|
|
|
Registrato
|
|
|
|
Zoff
Moderatore Globale
Illuminato Imbonitore
   
Non Connesso
Sesso: 
Messaggi: 23256
Media messaggi
Ubuntu user #24913 :D :D :D Linux user #471539
|
 |
« Risposta #15 inserita: 06 Gennaio, 2009, 21:57:13 » |
|
Questo codice lo uso con BUC, dentro ad un tag "button" mkfifo $HOME/mpla/foo cd "$folder" ls *.mp3 *.flac *.ape *.wma *.wv *.MP3 *.wav > .prova.m3u convert Folder.jpg -resize 90x $HOME/mpla/Folder.jpg mplayer -quiet -playlist .prova.m3u -input file=$HOME/mpla/foo > .file.txt & ls *.mp3 *.flac *.ape *.wma *.wv *.MP3 *.wav if grep -q * .file.txt then cp .file.txt file.txt DE=`grep -q 'Title:' file.txt` echo "$DE" TE=`basename "$folder"` notify-send --icon=$HOME/mpla/Folder.jpg --expire-time=5000 "$TE" "$DE" else sleep 2 cp .file.txt file.txt DE=`grep -q 'Title:' file.txt | sed s/Title://g`
echo "$DE" TE=`basename "$folder"` notify-send --icon=$HOME/mpla/Folder.jpg --expire-time=5000 "$TE" "$DE" fi
ultimaModifica=`stat -c %y .file.txt`
while true do update=`stat -c %y .file.txt`
if [ "$ultimaModifica" != "$update" ] ; then notify-send --icon=$HOME/mpla/Folder.jpg --expire-time=5000 'Playing' "$DE" fi sleep 2 done & Hai tolto da dentro l'if: ultimaModifica=`stat -c %y $1` rimettilo 
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« Risposta #16 inserita: 06 Gennaio, 2009, 23:00:38 » |
|
Perfetto!  Mi potresti spiegare perchè togliendo quella variabile il ciclo non funzionava bene?
|
|
|
|
|
Registrato
|
|
|
|
Zoff
Moderatore Globale
Illuminato Imbonitore
   
Non Connesso
Sesso: 
Messaggi: 23256
Media messaggi
Ubuntu user #24913 :D :D :D Linux user #471539
|
 |
« Risposta #17 inserita: 06 Gennaio, 2009, 23:10:17 » |
|
Perfetto!  Mi potresti spiegare perchè togliendo quella variabile il ciclo non funzionava bene? Perché il programma salva la data di ultima modifica in ultimaModifica (ipotiziamo che la data sia rappresentata da A) e poi controlla direttamente il file e confronta il valore letto con la variabile, se quando ci si accorge che c'è stata la modifica (cioè il valore del file non è piu' A ma B) non si aggiorna la variabile, la variabile mantiene il vecchio valore (A) mentre l'if legge sempre il nuovo valore (che ora è B ma può cambiare ancora) continua a confrontare il valore letto con A. L'ho spiegato maluccio spero tu abbia capito faccio un esempio: il file ha come valore di modifica A utlimaModifica assume valore A finché il file mantiene lo stato A nulla accade mplayer modifica il file in B ultimaModifica senza quell'istruzione rimane A A è sempre diverso da B (e poi dai futuri stati del file C, D,E,F...) per cui ad ogni ciclo mostro il messaggio Capito?
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Novello Novizio
Non Connesso
Messaggi: 240
Media messaggi
Guardami!
|
 |
« Risposta #18 inserita: 07 Gennaio, 2009, 22:07:18 » |
|
Scusami ma sono duro di comprendonia  Non mi entra in testa quel ultimaModifica=`stat -c %y .file.txt` dopo il then dell if. Il concetto generale del ciclo mi è chiaro ma quello no. I cilci while mi hanno sempre dato problemi. Non c'è un modo per non far schizzare la cpu al massimo durante il funzionamento del ciclo? Lo so che sto rompendo. 
|
|
|
|
|
Registrato
|
|
|
|
Zoff
Moderatore Globale
Illuminato Imbonitore
   
Non Connesso
Sesso: 
Messaggi: 23256
Media messaggi
Ubuntu user #24913 :D :D :D Linux user #471539
|
 |
« Risposta #19 inserita: 08 Gennaio, 2009, 00:23:47 » |
|
Non c'è un modo per non far schizzare la cpu al massimo durante il funzionamento del ciclo?
La CPU al 100%?  In teoria dovrebbe fare un ciclo ogni 2 secondi (sleep 2)... Sicuro che sia colpa di quel ciclo? Nuovo tentativo per spiegarti quella istruzione: Il programma funziona per confronto, per cui prima mi salvo nella variabile lo stato iniziale e poi lo confronto di volta in volta con lo stato che leggo direttamente dal file. Quando avviene un cambiamento, ossia la variabile risulta diversa dallo stato letto, si visualizza il messaggio. Poi è necessario aggiornare lo variabile con cui si fa il confronto altrimenti non è possibile riconoscere altri cambiamenti perché la variabile non rappresenta più lo stato attuale del file ma quello precedente che risulta ovviamente sempre diverso.
|
|
|
|
« Ultima modifica: 08 Gennaio, 2009, 00:27:04 da Zoff »
|
Registrato
|
|
|
|
|