Как очистить (усечь) файлы журнала в Linux

Как очистить (усечь) файлы журнала в Linux

 

В какой-то момент жизненного цикла Sysadmin может потребоваться очистить файл журнала, чтобы сэкономить место на системном диске или по любой другой причине. Существуют различные способы очистки файла в системе Linux.

Пустой файл журнала с помощью команды truncate

Самый безопасный способ очистки файла журнала в Linux — использование команды truncate. Команда усечения используется для сокращения или расширения размера каждого ФАЙЛА до указанного размера.

truncate -s 0 logfile

Где -sиспользуется для установки или настройки размера файла по размеру байтов. file Может быть относительно текущего каталога или абсолютный путь к файлу при условии.

Для полных опций команды усечения используйте опцию --help

Usage: truncate OPTION... FILE...
Shrink or extend the size of each FILE to the specified size

A 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 exit

The 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'

Пустой файл журнала, используя:> или 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

$ [[email protected] tmp]$ ls -l testfile 
-rw-r--r-- 1 jmutai jmutai 1338 Oct  2 23:07 testfile

[[email protected] tmp]$ dd if=/dev/null of=testfile 
0+0 records in
0+0 records out
0 bytes copied, 0.000322652 s, 0.0 kB/s

[[email protected] 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
    :>$file
done

Используйте любой из методов, чтобы очистить ваши большие файлы журнала.