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:

  • Eseguire uno script locale su un server remoto usando ssh senza wherersi preoccupare delle virgolette
  • Comandi di command cp su sovrascrittura anche con -f
  • Come aggiungere uno script per l'avvio e l'arresto in debian?
  • Qual è la differenza tra parentesi quadre doppie e singole in bash?
  • Cronjob non è in esecuzione
  • Arresta il completamento della tab bash dal pensare che voglio fare cd nelle directory .svn
  • 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.

    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.