How to Empty a Log File in Linux

You’ll find yourself in situations where you need to empty a file. This often happens when you have huge log files and How would you do that?

One not so clean way would be to remove the file and then create a new file. But this is not a good idea. It won’t be the same file, the timestamp (atime, mtime etc) will be different along with other file permissions.

Instead of creating a new empty file, you can delete its content. So, how do you empty a file in Linux? How to clear a file from all of its content without deleting the actual file?

4 ways to empty a file in Linux

There are several ways you can empty a file without actually deleting the file. Let me show you some of these methods.

Method 1: Truncate a file using truncate command

The safest way to truncate a log file is using the truncate command.

truncate -s 0 filename

In the above command, -s is used to set/adjust the size (in bytes) of the file. When you use -s 0, it means you adjusted the file size to 0 bytes. In

Method 2: Empty file using :> or >

The simplest way to empty a file is to use the command below. If the file is not in use, it will work in Bash:

> filename

While the above works only in Bash Shell, you can use a similar command for other shells:

:> filename

You can also use this command to clear a file:

true > filename

Method 3: Using echo command to empty file in Linux

Another way to empty a file is via echo command in Linux:

echo > filename

You can also use echo command in this way:

echo "" > filename

Method 4: Use /dev/null to clear a file

You can also use the famous /dev/null and combine with the cat command to clear a log file:

cat /dev/null > file.log

In the end…

And if you don’t have enough permissions for any of the above commands, this is the sure shot but a little dirty way to achieve it:

touch newfile
mv newfile filename

You can also empty a file by deleting all lines in Vim editor.

source: https://linuxhandbook.com/empty-file-linux/