Clear a log file without deleting it

Need to clear out a log file to get rid of the “noise” in it? I do that often when tracking down a problem. However, deleting it usually means restarting the service that spawned it, which is not always possible (on a production server). The solution is to use redirection and the so-called “bit bucket” to get this done.

You clear the contents of a file (by sending it null data), but keep the file itself. Here’s how:

Lets say we are not happy that the “lastlog” file has grown to 19 megabytes in size.

# ls -ltr lastlog
-r——– 1 root root 19M Feb 6 12:34 lastlog

So we fill up the lastlog file with nothingness from /dev/null:
# cat /dev/null > lastlog

Ahhh, now lastlog is a good size!
# ls -ltr lastlog
-r——– 1 root root 0 Feb 6 12:34 lastlog