В какой-то момент у вас, как у системного инженера или администратора, может возникнуть необходимость очистить огромный файл журнала, чтобы сэкономить место на системном диске или по какой-либо другой причине. Существуют различные способы очистки файлов в системе Linux.
Очистить файл журнала с помощью команды truncate
Самый безопасный способ очистить лог-файл в Linux — это использовать команду truncate. Команда truncate используется для уменьшения или увеличения размера каждого ФАЙЛА до указанного размера.
truncate -s 0 logfile
Где -s используется для установки или изменения размера файла на SIZE байт. Адрес file может быть относительным к текущему каталогу или абсолютным путем к указанному файлу.
Для получения полной информации о параметрах команды truncate используйте опцию —help
$ truncate —help
Usage: truncate OPTION… FILE…Shrink or extend the size of each FILE to the specified sizeA FILE argument that does not exist is created.If a FILE is larger than the specified size, the extra data is lost.If a FILE is shorter, it is extended and the extended part (hole)reads as zero bytes.Mandatory arguments to long options are mandatory for short options too. -c, —no-create do not create any files -o, —io-blocks treat SIZE as number of IO blocks instead of bytes -r, —reference=RFILE base size on RFILE -s, —size=SIZE set or adjust the file size by SIZE bytes —help display this help and exit —version output version information and exitThe SIZE argument is an integer and optional unit (example: 10K is 10*1024).Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,… (powers of 1000).SIZE may also be prefixed by one of the following modifying characters:’+’ extend by, ‘-‘ reduce by, ‘<‘ at most, ‘>’ at least,’/’ round down to multiple of, ‘%’ round up to multiple of.GNU coreutils online help: <https://www.gnu.org/software/coreutils/>Full documentation at: <https://www.gnu.org/software/coreutils/truncate>or available locally via: info ‘(coreutils) truncate invocation’
Для нескольких файлов можно использовать подстановочный знак, например:
truncate -s 0 /var/log/*log
Для вложенных папок:
truncate -s 0 /var/log/**/*.log
Или с помощью цикла for и усечения:
for logfile in $(ls /var/log/*.log)do truncate -s 0 $logfiledone
Пустой файл журнала с использованием :> или true >
Вы также можете использовать :> для очистки содержимого файла. Синтаксис следующий
:> logfile
Это эквивалентно
true > logfile
См. пример ниже

Пустой файл журнала с помощью команды echo
Если ничего не передавать в файл, то он очистится от содержимого и станет пустым.
echo «» > logfile
Это то же самое, что
echo > testfile
Пустой файл журнала с помощью команды dd
Синтаксис для использования dd следующий
dd if=/dev/null of=logfile
или
dd if=/dev/null > logfile
См. примеры ниже
$ ls -l testfile -rw-r—r— 1 jmutai jmutai 1338 Oct 2 23:07 testfile
$
[jmutai@arch tmp]$ ls -l testfile -rw-r—r— 1 jmutai jmutai 1338 Oct 2 23:07 testfile
[jmutai@arch tmp]$ dd if=/dev/null of=testfile 0+0 records in0+0 records out
0 bytes copied, 0.000322652 s, 0.0 kB/s
[jmutai@arch tmp]$ ls -l testfile -rw-r—r— 1 jmutai jmutai 0 Oct 2 23:33 testfile
Для нескольких файлов достаточно простого цикла в bash.
for file in logfile1 logfile2 logfile2 … ; do truncate -s 0 $file #or dd if=/dev/null of=$file #or :>$filedone
Пустой файл журнала с помощью команды find и truncate
Вы также можете использовать команду find, чтобы найти все .log файлы в каталоге и усекаются.
find /var/log -type f -iname ‘*.log’ -print0 | xargs -0 truncate -s0
Для любого файла с ключевым словом log:
find /var/log -type f -iname ‘*log’ -print0 | xargs -0 truncate -s0
Используйте любой из этих методов для очистки больших файлов журнала.