Come posso monitorare la dimensione di un file?

1

Eseguo un particolare progetto open source abbandonato (StreamBaby) sul mio server multimediale di casa, un Mac Mini. È fantastico ma ha uno sfortunato problema che a volte fa sì che l'app generi un registro degli errori assolutamente massiccio, come nell'ordine di molte decine di gigabyte. A volte, nel momento in cui me ne accorgo, è ben più di 100 GB. Tutto quello che devo fare è cancellarlo e riavviare il servizio e tutto va bene, ma ovviamente i problemi possono sorgere se l'unità esaurisce lo spazio a causa di questo.

Vorrei monitorare questo file e ogni volta che è più grande di forse 10 MB, avvisami in qualche modo (segnale acustico, invia un'email, fai un avviso ... qualcosa). Ho trovato servizi che monitorano se una dimensione del file è cambiata, ma ho bisogno di monitorarlo per una dimensione specifica.

Questo può essere fatto tramite Automator, AppleScript o altri mezzi?

    
posta Jonathan van Clute 13.09.2015 - 06:00
fonte

3 risposte

1

Poiché il collegamento simbolico non lavoro potresti usare un cronjob per cancellare il file di tanto in tanto.

Per questo avrai bisogno del Terminale. Se non sei familiare, ecco un'introduzione .

Utilizza il seguente comando per aprire il file crontab (chiama invece crontab -e se invece vuoi usare vim):

EDITOR=nano crontab -e

Inserisci quanto segue e salva il file (con Ctrl-X - > y - > enter). È necessario modificare il file nel file di registro

0 */1 * * * > "/Users/chaos/Library/Logs/SomeLog.log"

Lasciami spiegare: 0 */1 * * * significa che in ogni ora completa il comando verrà eseguito (a meno che non sia disattivato, ovviamente). Vedi wikipedia per maggiori informazioni.

Il comando che si sta eseguendo sta fondamentalmente dicendo "reindirizzare nulla al file", troncandolo efficacemente a 0 byte. Puoi riconoscerlo da echo something > somefile.log .

FYI: il demone cron verrà avviato automaticamente da launchd se esiste un cronfile.

    
risposta data 13.09.2015 - 14:56
fonte
1

Se non hai effettivamente bisogno del contenuto del file, puoi collegarlo a /dev/null , il che significa che qualsiasi cosa scritta nel file sparirà immediatamente. Per farlo

  • esci dall'applicazione
  • rm /path/to/logfile
  • ln -s /dev/null /path/to/logfile
risposta data 13.09.2015 - 06:41
fonte
0

Bene, benché sia alquanto complicato monitorare effettivamente il file in questione e cancellarlo solo se necessario, è semplice in Automator abbandonare semplicemente il servizio in esecuzione, eliminare il file di log e riavviare il servizio. Posso quindi semplicemente eseguire questo lavoro ogni giorno alle 4 del mattino quando nessuno è probabile che stia guardando qualcosa da uno dei due server, e le cose dovrebbero andare bene. Grazie a @patrix, @ 2called-chaos e @mark, in definitiva, tutti mi portano a questa soluzione.

    
risposta data 13.09.2015 - 20:14
fonte

Leggi altre domande sui tag