在写这个shell之前先说一下,stat命令的使用方法

一、关于时间戳

每一个文件都有3中时间(称为时间戳timestamps),对这3种时间,很多时候容易混淆不清,因此 这里要说明下:

  Access time(atime):是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内容,使用cp命令把该文件(即来源文件)复制成其他文件,或者在这个文件上运用grep sed more less tail head 等命令,凡是读取而不修改文件的操作,均衡改变文件的Access time.

  Modify time(mtime):是指修改文件内容的时间,只要文件内容有改动(如使用转向输出或转向附加的方式)或存盘的操作,就会改变文件的Modify time,平常我们使用ls –l查看文件时,显示的时间就是Modify time

  Change time(ctime):是指文件属性或文件位置改动的时间,如使用chmod,chown,mv指令集使用ln做文件的硬是连接,就会改变文件的Change time.

Note:

如果修改文件(使用编辑器存盘或使用) >>转向操作),则Modify time和Change time

会同步更新成写入的时间,但Access time不变。

如果执行touch文件,则3中时间全部改变

使用ln –s做文件的软式连接,会改变文件的取用时间

使用ls –la查看一般文件,不会更改这三种时间,但如果这个文件时符号链接文件,则会改变取用的时间(Access time)

二、关于stat命令

Stat是获取关于文件的额外信息,获得两种信息:

1、 文件系统

2、 文件

基本用法:

取得文件系统属性

Stat –f /dev/sda1

-f :表示取用的是文件系统(分区)而不是文件

取得文件属性

Stat filename

Stat 基本语法格式:

Stat –c 格式代码 文件

格式代码:

针对文件(非全部列举)

%A:用文件权限代码来表示权限

%F:用八进制表示文件权限

%G:文件拥有者的组名

%g:文件拥有者的属组id(gid)

%i:inode编号

%n:文件名

%s:文件大小

%U:文件拥有者名称

%u:文件拥有者的id(uid)

%x: 取用时间

%y: 修改时间

%z: 属性改动时间

针对文件系统:

%a: 一般使用者可自由使用的区块数

%b: 全部的区块数

%c: 全部的文件节点数

%d: 可取用的文件节点数

%f: 可取用的区块数

详细可访问:http://lovelace.blog.51cto.com/1028430/1212623

以下是shell脚本:

#! /bin/bash

data_path="/opt/test5"    #此处定义数据文件的路径

expired_time=3         #此处定义文件的过期时间,如3天

function deletefiles(){

local currentDate=`date +%s`   #获取系统时间,所以时间格式为秒

echo "current date is: " $currentDate

for file in `find $1 -name "*.sh"`  #此处定义文件格式,避免误删,$1指的是下面deletefiles函 数的参数$data_path

do

local name=$file

local modifyDate=$(stat -c %Y $file)

local existTime=$[$currentDate-$modifyDate]   #对比时间,算出日志存在时间,距离最近一次修改

existTime=$[$existTime/86400]

if [ $existTime -gt $expired_time ];then

echo "File: " $name "Modify Date: " $modifyDate + "Exist time: " $existTime + "Delete: yes"

rm -rf $file

else

echo "File: " $name "Modify Date: " $modifyDate + "Exist time: " $existTime + "

Delete: no"

fi

done

}

deletefiles $data_path

我这个测试脚本的名字是test30.sh,也是放在/opt/test5下面,如下图:

然后执行脚本,sh test30.sh,结果如下:

没有问题的话,我们可以使用计划任务对shell脚本进行控制;crontab -e

每个月的15日的0时0分执行/opt/test5/test30.sh这个脚本:

详细的crontab 可参照这个网址:http://www.cnblogs.com/kerrycode/p/3238346.html

本文参考了以下好文章:

1.http://gaowenlong.blog.51cto.com/451336/1835545

2.http://lovelace.blog.51cto.com/1028430/1212623

3.http://www.cnblogs.com/kerrycode/p/3238346.html

转载于:https://blog.51cto.com/5609180/1864218

Linux 下Shell脚本删除过期文件相关推荐

  1. Linux下shell脚本/Makefile编写

    Linux下shell脚本/Makefile编写 一.基本概念 代码变成可执行文件,叫做编译(compile):先编译这个,还是先编译那个(即编译的安排),叫做构建(build). make只是一个指 ...

  2. linux shell脚本攻略_(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤...

    今天为大家带来的内容是:(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤 本文内容主要介绍了Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤,文章 ...

  3. Linux下Shell脚本实战之监测磁盘空间

    Linux下Shell脚本实战之监测磁盘空间 一.脚本目的及要求 二.脚本内容 三.运行脚本 一.脚本目的及要求 (1) 监控/home下每各个用户目录的占用磁盘大小 (2) 监控/var/log下前 ...

  4. Linux下shell脚本实战之批量新建用户

    Linux下shell脚本实战之批量新建用户 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.使用提供的user.txt用户列表 2.批量新建us ...

  5. linux中rm删除的文件是否可以恢复,Linux下用rm删除的文件的恢复方法

    Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2008-08/14744.htm lin ...

  6. Linux下shell脚本之双色球摇号脚本

    Linux下shell脚本之双色球摇号脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.编写脚本Lottery.sh,模拟摇号过程 2.6位数 ...

  7. linux下shell脚本启动其他可执行程序

    linux下shell脚本启动其他可执行程序 零.前言 一.C++代码 二.shell脚本 三.shell运行效果 零.前言 linux下的项目中经常需要使用shell脚本去启动其他程序的操作,下面是 ...

  8. shell脚本 java jar_linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  9. linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...

    前言 服务器.vps,难免会遇到各种问题,丢失数据,则必然痛心疾首啊!!! 数据无价,so建议养成定期备份的习惯!而且,要多备份几份,本地.网盘.FTP空间等,都多保存几份! 这里,就为大家带来一个l ...

最新文章

  1. SD-WAN:MSP连接
  2. Android抓包方法(一)之Fiddler代理
  3. 洛谷 P1663 山
  4. 项目管理概述学习记录(一)
  5. 关于Git的几个使用技巧
  6. 情怀满满 新一代观影神器坚果1895
  7. mysql同步到另一台服务器_mysql两台服务器主从同步
  8. java中input表单中的type=date返回类型【切记】
  9. openmv串口数据 串口助手_第三课使用pyserial来接收和发送串口数据
  10. RabbitMQ和Kafka的显著差异(3)
  11. SQL Server时间粒度系列----第9节时间粒度示例演示
  12. glusterfs的一些基本知识
  13. 经典检索算法:BM25算法
  14. 利用Java发送邮件(含附件)的例子
  15. ROS教程之在自己键盘上控制小海龟移动
  16. 一文看懂数字孪生,工信部权威白皮书
  17. Chrome支持的MP4编解码器有限
  18. 为什么需要Code Review?
  19. 2023 最新计算机视觉学习路线(入门篇)
  20. HashCat配GPU

热门文章

  1. Windows下Python 3.7.1安装
  2. phpstudy下的mysql升级
  3. 唯一聚集索引上的唯一和非唯一非聚集索引
  4. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
  5. 企业分布式微服务云SpringCloud SpringBoot mybatis (七)高可用的分布式配置中心(Spring Cloud Config)...
  6. VMware 6.5开始,VMware vSphere ESXI只能通过浏览器访问
  7. 6条可以成为更好程序员的建议
  8. 如何为 Flask Web 应用配置 Nginx
  9. Python奇遇记:数据结构窥探2
  10. JavaCollection