注:此文属于「不求甚解」的,只是记录「哟,这个能用」的命令😄
如何清空日志文件,听起来非常简单,其实也没那么简单(对小白来说)。
最最常见的,比如 nginx 生成的站点的日志文件,如错误日志 error.log
,我们可以把这个文件直接删了,然后新建一个同名的,但是这样操作会有一段空隙,在已经删除了但是还没有新建之前,nginx 找不到日志文件了,它也不会自己新建一个,虽然不会影响到站点运行,但是这其实已经出错了,如果 nginx -t
,就会发现它提示找不到 error.log
。
我们也可以编辑这个日志文件,把里面的内容全部删除,然后再保存一下。但是,这样明显很繁琐,而且如果日志文件很大,加载起来都有些困难。
上面说的,其实就是小白级别的,我们平时使用 Windows 系统时的思维。在 Linux 上这样操作时不对的。那么具体要怎么清空呢?用 ubuntu empty log file,或者 ubuntu truncate log file 搜索一下,就能找到答案了,当然换成其他发行版或者直接使用 linux 也同理。
下面写下我自己使用的,比较简单的,还有更复杂的,可以自行了解
> error.log
这个命令最简单,对于当前用户有操作权限的日志,使用这个命令就可以清空了。但如果是没有权限的,会报错,类似下面这样:
-bash: error.log: Permission denied
此时加上 sudo
,就不对了,因为这个 >
号在 Linux 里是 Redirecting Standard Output (stdout) 的意思,是一个基本的 Linux 命令,如果前面加上 sudo
,那么整条命令结构就变了,成了把执行 sudo
命令后的 stdout 保存到这个日志文件的意思了。而只单独运行一个 sudo
未加任何命令显然是不行的。
那么怎么办呢?可以用下面这条命令:
sudo bash -c '> error.log'
注意,这里除了这种直接跑到这个日志所在的目录操作外,其他的涉及多层目录路径的,最好用绝对路径,否则容易出错。