Я пытаюсь написать сценарий Unix, который будет обрезать / очищать файл, который постоянно записывается / открывается приложением, когда он достигает, скажем, 3 ГБ пространства. Я знаю, что это сделает следующая команда:
cp /dev/null [filename]
Но я собираюсь запустить это в производственной среде автоматически как задание cron - просто разместите здесь сообщение, чтобы узнать, не столкнулись ли вы с какими-либо проблемами при выполнении чего-то похожего.
logrotate
, он может дать вам некоторую ценность (но раздражает при его настройке (просто догадываюсь)!).Ответы:
Просто чтобы добавить еще один ответ,
:
не работает в bash (совместим с POSIX), поэтому по сути он просто открывает файл для записи (что, конечно, усекает файл), а затем немедленно закрывает его.РЕДАКТИРОВАТЬ: как прокомментировал шелтер, вам действительно не нужна команда для перенаправления:
$ echo foo > foo.txt $ cat foo.txt foo $ > foo.txt $ cat foo.txt $
Простое перенаправление само по себе очистит файл.
источник
> filename
(как я уверен, вы знаете). Всем удачи.Я использовал следующую команду в debian
источник
sudo sh -c ': > filename'
также будет усекатьfilename
sudo
:sudo cp /dev/null filename
. Такжеcp
переносится, покаtruncate
есть только современный Linux.Мне это кажется разумным. Unix, конечно, позволяет сделать это примерно 50 различными способами. Например,
echo -n "" >filename cat /dev/null >filename
источник
trunc filename
работает на AIX версии UNIX
источник