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