linuxtruncate命令,如何在Linux中截断truncate⽂件
在某些情况下,您可能希望将现有⽂件截断(空)为零长度。简单来说,截断⽂件意味着删除⽂件内容⽽不删除⽂件。
截断⽂件⽐删除⽂件,重新创建并设置正确的权限和所有权更快,更容易。另外,如果⽂件是由进程打开的,则删除⽂件可能会导致使⽤该⽂件的程序出现故障。
本教程说明了如何在Linux系统中使⽤shell重定向和truncate命令将⽂件截断为零⼤⼩。
Shell重定向
截断⽂件最简单,最常⽤的⽅法是使⽤> Shell重定向操作符。
使⽤重定向截断⽂件的⼀般格式为:: > filename
让我们分解⼀下命令::冒号表⽰true,不产⽣输出。
重定向操作符>将先前命令的输出重定向到给定⽂件。
filename,您要截断的⽂件。
如果⽂件存在,它将被截断为零。否则,将创建⽂件。
除了:以外,还可以使⽤另⼀个不产⽣任何输出的命令。
以下是使⽤cat命令输出/dev/null设备内容的⽰例,该设备仅返回⽂件结尾字符:cat /dev/null > filename
另⼀个可以使⽤的命令是echo。 -n选项告诉echo不要添加换⾏符:echo -n > filename
在⼤多数现代的Shell(例如Bash或Zsh)上,您可以在重定向符号之前省略命令,并使⽤:> filename
要能够截断⽂件,您需要对该⽂件具有写权限。通常,您将为此使⽤sudo,但是提升的root特权不适⽤于重定向。这是⼀个例⼦:sudo : > /var/log/syslogbash: /var/log/syslog: Permission denied
有⼏种解决⽅案,可以使⽤sudo进⾏重定向。第⼀个选项可以使⽤sudo运⾏新的shell,并使⽤-c标志在该shell中执⾏命令:sudo sh -c '> filename'
另⼀个选择是将输出传递给tee命令,将tee特权提升为sudo,然后将空输出写⼊给定⽂件:: | sudo tee filename
truncate命令
truncate是⼀个命令⾏实⽤程序,可让您将⽂件的⼤⼩缩⼩或扩展到给定的⼤⼩。
使⽤truncate命令将⽂件截断为零⼤⼩的⼀般语法如下:truncate -s 0 filename
-s 0选项将⽂件⼤⼩设置为零。
例如,要清空Nginx访问⽇志,您可以使⽤:sudo truncate -s 0 /var/log/nginx/access.log
清空所有⽇志⽂件
随着时间的流逝,您的磁盘驱动器可能会堆满很多⼤型⽇志⽂件,这些⽇志⽂件会占⽤⼤量磁盘空间。
以下命令将清空/var/log⽬录下以“ .log”结尾的⽂件:sudo truncate -s 0 /var/log/**/*.log
linux重定向⼀个更好的选择是使⽤logrotate⼯具压缩和删除⽇志⽂件。
结论
要在Linux中截断⽂件,请使⽤重定向操作符>,后跟⽂件名。
如果您有任何疑问或意见,请在下⾯发表评论。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。