fiamma
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« inserita: 06 Gennaio, 2009, 20:02:38 » |
|
Ciao
esiste un comando che permetta di sapere se un file è stato modificato?
Grazie
|
|
|
|
« Ultima modifica: 08 Gennaio, 2009, 17:28:57 da fiamma »
|
Registrato
|
|
|
|
|
KabaL_ScarS
|
 |
« Risposta #1 inserita: 06 Gennaio, 2009, 20: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
Jr. Member

Non Connesso
Messaggi: 181
Media messaggi
|
 |
« Risposta #2 inserita: 06 Gennaio, 2009, 20:11:54 » |
|
Se hai l'originale puoi confrontarlo con un altro con il comando diff.
|
|
|
|
|
Registrato
|
|
|
|
fiamma
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« Risposta #3 inserita: 06 Gennaio, 2009, 20: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
|
 |
« Risposta #4 inserita: 06 Gennaio, 2009, 20: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
|
"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec" Let him who hath understanding reckon the number of the beast for it is a human number its number is rw-rw-rw-
|
|
|
l3on
Amministratore del Wiki
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 4.452
Media messaggi
Mono+Gtk# -> Forte!
|
 |
« Risposta #5 inserita: 06 Gennaio, 2009, 21: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
|
 |
« Risposta #6 inserita: 06 Gennaio, 2009, 21: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
|
"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec" Let him who hath understanding reckon the number of the beast for it is a human number its number is rw-rw-rw-
|
|
|
fiamma
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« Risposta #7 inserita: 06 Gennaio, 2009, 22: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
|
 |
« Risposta #8 inserita: 06 Gennaio, 2009, 22: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
|
"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec" Let him who hath understanding reckon the number of the beast for it is a human number its number is rw-rw-rw-
|
|
|
fiamma
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« Risposta #9 inserita: 06 Gennaio, 2009, 22: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
|
 |
« Risposta #10 inserita: 06 Gennaio, 2009, 22: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
|
"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec" Let him who hath understanding reckon the number of the beast for it is a human number its number is rw-rw-rw-
|
|
|
fiamma
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« Risposta #11 inserita: 06 Gennaio, 2009, 22: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
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« Risposta #12 inserita: 06 Gennaio, 2009, 22: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
|
 |
« Risposta #13 inserita: 06 Gennaio, 2009, 22: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
|
"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec" Let him who hath understanding reckon the number of the beast for it is a human number its number is rw-rw-rw-
|
|
|
fiamma
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« Risposta #14 inserita: 06 Gennaio, 2009, 22: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
|
 |
« Risposta #15 inserita: 06 Gennaio, 2009, 22: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
|
"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec" Let him who hath understanding reckon the number of the beast for it is a human number its number is rw-rw-rw-
|
|
|
fiamma
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« Risposta #16 inserita: 07 Gennaio, 2009, 00:00:38 » |
|
Perfetto!  Mi potresti spiegare perchè togliendo quella variabile il ciclo non funzionava bene?
|
|
|
|
|
Registrato
|
|
|
|
|
Zoff
|
 |
« Risposta #17 inserita: 07 Gennaio, 2009, 00: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
|
"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec" Let him who hath understanding reckon the number of the beast for it is a human number its number is rw-rw-rw-
|
|
|
fiamma
Jr. Member

Non Connesso
Messaggi: 146
Media messaggi
|
 |
« Risposta #18 inserita: 07 Gennaio, 2009, 23: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
|
 |
« Risposta #19 inserita: 08 Gennaio, 2009, 01: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, 01:27:04 da Zoff »
|
Registrato
|
"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec" Let him who hath understanding reckon the number of the beast for it is a human number its number is rw-rw-rw-
|
|
|
|