Unix shell script для усечения большого файла

Я пытаюсь написать Unix script, который будет обрезать/удалить файл, который постоянно записывается/открывается приложением, когда он достигает 3 ГБ пространства. Я знаю, что команда ниже:

cp /dev/null [filename]

Но я собираюсь запустить это в производственной среде автоматически как задание cron - просто разместите здесь, чтобы посмотреть, не возникли ли у вас какие-либо проблемы при выполнении чего-то подобного.

Ответ 1

Просто чтобы добавить другой ответ,

: > filename

: не используется в bash (POSIX-совместимом), поэтому по сути он просто открывает файл для записи (который, конечно, усекает файл), а затем сразу же закрывает его.

ОБНОВЛЕНИЕ: как прокомментировал shellter, на самом деле вам не нужна команда для выполнения перенаправления:

$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$

Простое перенаправление само по себе очистит файл.

Ответ 2

Я использовал следующую команду для debian

truncate -s 0 filename

Ответ 3

Мне кажется разумным. Unix, конечно, позволит вам сделать это примерно по 50 способов. Например,

echo -n "" >filename
cat /dev/null >filename

Ответ 4

trunc filename

работает над стилем AIX UNIX