Saya mencoba menulis skrip Unix yang akan memotong / mengosongkan file yang terus-menerus ditulis / dibuka oleh aplikasi ketika mencapai, katakanlah ruang 3GB. Saya tahu bahwa perintah di bawah ini akan melakukannya:
cp /dev/null [filename]
Tetapi saya akan menjalankan ini di lingkungan produksi secara otomatis sebagai tugas cron - cukup posting di sini untuk melihat apakah kalian menghadapi masalah saat melakukan sesuatu yang serupa dengan ini.
logrotate
, ini mungkin memberi Anda beberapa nilai (tetapi mengganggu pengaturannya (hanya menebak-nebak)!).Jawaban:
Hanya untuk menambahkan jawaban lain,
:
adalah no-op di bash (sesuai dengan POSIX), jadi ini pada dasarnya hanya membuka file untuk ditulis (yang tentu saja memotong file) dan kemudian segera menutupnya.EDIT: seperti yang dikomentari shellter, Anda sebenarnya tidak memerlukan perintah untuk mengikuti pengalihan:
$ echo foo > foo.txt $ cat foo.txt foo $ > foo.txt $ cat foo.txt $
Pengalihan sederhana dengan sendirinya akan menghapus file.
sumber
> filename
(seperti yang saya yakin Anda tahu). Semoga beruntung untuk semuanya.Saya telah menggunakan perintah berikut di debian
sumber
sudo sh -c ': > filename'
juga akan memotongfilename
sudo
:sudo cp /dev/null filename
. Jugacp
portabel sementaratruncate
hanya untuk Linux modern.Sepertinya itu masuk akal bagi saya. Unix, tentu saja, akan membiarkan Anda melakukan ini dengan 50 cara berbeda. Sebagai contoh,
echo -n "" >filename cat /dev/null >filename
sumber
trunc filename
bekerja pada AIX flavor dari UNIX
sumber