find结合重定向符清理文件

大家知道,清理日志文件时,如果该文件正在被某进程使用,则系统不会删除,只会标注为deleted(使用lsof|grep deleted可以查看哪些文件被标注为这个状态),所以这部分的磁盘空间不会释放,那么如何在不重启进程的情况下,让空间释放呢?使用重定向符清空文件即可.

假设日志文件为/var/log/tomcat/info.log,则使用命令:

 > /var/log/tomcat/info.log

当该目录下有多个文件时,可以结合find查找文件,但是使用下面的命令无效(引起Shell的歧义,会在当前目录生成一个文件名为{}的文件):

find /var/log/tomcat/ -type f -name ‘*.log‘ -exce > {} \;   #无效命令

那么可以复杂一点,写个脚本:

for file in `find /var/log/tomcat/ -type f -name ‘*.log‘`;do
  > $file
done

其实最简单的方法是:

find /var/log/tomcat/ -type f -name ‘*.log‘ -exce sh -c ‘> {}‘ \;
时间: 2024-11-03 22:21:01

find结合重定向符清理文件的相关文章

Shell命令(2)——文件描述符和重定向符

文件描述符 stdin:标准输入,接收鼠标.键盘或其他输入设备的输入信息,文件描述符是1 stduot:输出所有的正常输出结果,文件描述符是2 stderr:输出所有错误信息,文件描述符是3 重定向符 “>":使用方法,“command > file",进程接受标准输入后,该重定向符使得标准输出改变方向,不输出到屏幕,而是输出到一个文件.标准错误输出依然不变,默认输出到屏幕或相应的设备.另外,若文件已存在,则原有内容就会被擦除.例如: ”>>" :与上

基于文件描述符的文件操作(非缓冲)

1.1. 文件描述符:内核为每个进程维护一个已打开文件的记录表,文件描述符是一个较小的正整数(0-1023),它代表记录表的一项,通过文件描述符和一组基于文件描述符的文件操作函数,就可以实现对文件的读.写.创建.删除等操作.常用基于文件描述符的函数有open(打开).creat(创建).close(关闭).read(读取).write(写入).ftruncate(改变文件大小).lseek(定位).fsync(同步).fstat(获取文件状态).fchmod(权限).flock(加锁).fcnt

nginx支持缓存302重定向后的文件到本地

试想一下这样一个需求: 在使用nginx反向代理的时候,我们需要缓存从后端服务器拉取的内容,正常情况下,如果所需要的内容就在后端服务器上,那么很容易,使用nginx的 proxy_cache模块就能够实现缓存.但是有一种情况:内容没有在后端服务器上,而是从后端服务器返回了一个重定向地址,重定向到了第三方服务器, 那么这时候nginx缓存下来的内容就是不是我们需要的源内容了,而是一个只包含重定向链接的文件,那么我们如何应对这一情况呢? X-accel允许在nginx内部重定向到一个从后端服务器返回

<、>&、<& 重定向符

<.>&.<& 重定向符 这三个命令也是管道命令,但它们一般不常用,你只需要知道一下就ok了,当然如果想仔细研究的话,可以自己查一下资料.(本人已查过,网上也查不到相关资料) <,输入重定向命令,从文件中读入命令输入,而不是从键盘中读入.@echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输入直接修改当前日期 >&,将一个句柄的输出写入到另一个句柄的输入中.&

用DOS批处理实现FTP自动上传、下载、清理文件

最近好像特别的忙,好久没来写点东西了,今天写了一个利用批处理程序完成FTP自动上传.下载.清理文件的程序.赶紧 记录下来,以备日后之用.功能介绍:自动登录远程主机,并到指定目录下下载文件,下载完成后,检查下载到本地的文件并删除主机上的文件.程序名称及功能:getfile.bat:主程序,检查配置目录及调用ftp脚本.getfile.ftp:ftp运行脚本.movefile.bat:删除远程主机上的文件.以下是批处理的具体内容. 1.getfile.bat内容: @echo off REM 配置基

五、基于文件描述符的文件操作(非缓冲)

1文件描述符 内核为每个进程维护一个已打开文件的记录表,文件描述符是一个较小的正整数(0—1023),它代表记录表的一项,通过文件描述符和一组基于文件描述符的文件操作函数,就可以实现对文件的读.写.创建.删除等操作. 常用基于文件描述符的函数有open(打开).creat(创建).close(关闭).read(读取).write(写入).ftruncate(改变文件大小).lseek(定位).fsync(同步).fstat(获取文件状态).fchmod(权限).flock(加锁).fcntl(控

文件描述符、文件描述符表、打开文件表、目录项、索引节点之间的联系

文件描述符.文件描述符表.打开文件表.目录项.索引节点之间的联系如下图所示: 每个进程在PCB(Process Control Block)中都保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针,已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体. 在file结构体中维护File Status Flag(file结构体的成员f_flags)和当前读写位置(file结构体的成员f_pos).在上图中,进程1和进程2都打开同一文件,

文件描述符和文件指针的区别

文件描述符:在linux系统中打开文件就会获得文件描述符,它是个很小的正整数.每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针. 文件指针:C语言中使用文件指针做为I/O的句柄.文件指针指向进程用户区中的一个被称为FILE结构的数据结构.FILE结构包括一个缓冲区和一个文件描述符.而文件描述符是文件描述符表的一个索引,因此从某种意义上说文件指针就是句柄的句柄(在Windows系统上,文件描述符

3.4 对于指定的描述符打印文件标志

file/fileflags.c #include "apue.h" #include <fcntl.h> int main(int argc, char *argv[]) { int val; if (argc != 2) err_quit("usage: a.out <descriptor#>"); if ((val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0) err_sys("fcn