Come rimuovere periodicamente tutti i contenuti da un file senza eliminarla

Ho bisogno di periodicamente vuoto un file di text senza cancellarlo (so quante linee ha).

Ho provato questo:

Creato un cron che esegue il seguente script

other lines from the script here sed '1,14d' file.txt>file.txt 

Se l'ho eseguito da un terminal funziona bene, ma quando eseguo il cron esegue la prima parte (la parte "altre righe da script qui"), ma non svuota il file.

Nota: il file dispone di 777 autorizzazioni, quindi non credo che siano relative le autorizzazioni.

  • Script upstart vs command-line: perché questa differenza nel comportmento?
  • Cambiare il path fisico su IIS tramite appcmd non è attivo
  • Come caricare i comandi nel profilo powershell per eseguire il command di potenza di avvio
  • È ansible utilizzare Puppet per assicurarsi che siano presenti più file in una directory senza definirli tutti?
  • Come faccio a controllare se esiste un utente nel burattino?
  • Robocopy da uno a molti
  • Come rimuovere un certo simbolo per uno script bash
  • Powershell che cambia Data al primo dell'ultimo mese quando lo script viene eseguito
  • 6 Solutions collect form web for “Come rimuovere periodicamente tutti i contenuti da un file senza eliminarla”

    Forse la directory di lavoro corrente non è ciò che ti aspetti quando cron esegue lo script. Provare a specificare il path completo di file.txt. Inoltre, questo dovrebbe svuotare anche il file, nel caso in cui esista qualche problema con il command sed:

     echo > file.txt 

    Puoi provare un semplice> file.txt

     $ cat file.txt this is a test $ >file.txt $cat file.txt $ 

    È inoltre ansible utilizzare logrotate , che consente di non solo svuotare il file, ma di archiviare (ad esempio, comprimere) i contenuti precedenti del file e anche submit il file a voi.

    Il tradizionale modo un * x per "vuoto" un file:

     $ cat /dev/null > myfile 

    Spostare il file e toccare un nuovo file (quindi modificare il descrittore di file) potrebbe impedire alle applicazioni esistenti di continuare a scrivere sul file, in modo tale che generalmente è indesiderabile. Se è necessaria una copia se il file esistente è necessario, puoi fare qualcosa di simile (anche se notare che non è atomico, quindi una data può essere duplicata in entrambi i file):

     $ cp myfile myfile-$(date '+%F') && cat /dev/null > myfile 

    E, come accennato, i lavori "cron" di solito non funzionano nella directory che ti aspetti; ma puoi "cd" nella directory desiderata nello script per eseguire il lavoro e utilizzare ancora routes relativi.

    Vorrei fare questo: mv file file.bak && touch file && rm file.bak

    Spingo il file innanzitutto, nel caso in cui il sistema accada di aprirlo.

    Puoi anche usare il troncamento (1), se il tuo sistema lo ha.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.