Linux 下Shell脚本删除过期文件
在写这个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脚本删除过期文件相关推荐
- Linux下shell脚本/Makefile编写
Linux下shell脚本/Makefile编写 一.基本概念 代码变成可执行文件,叫做编译(compile):先编译这个,还是先编译那个(即编译的安排),叫做构建(build). make只是一个指 ...
- linux shell脚本攻略_(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤...
今天为大家带来的内容是:(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤 本文内容主要介绍了Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤,文章 ...
- Linux下Shell脚本实战之监测磁盘空间
Linux下Shell脚本实战之监测磁盘空间 一.脚本目的及要求 二.脚本内容 三.运行脚本 一.脚本目的及要求 (1) 监控/home下每各个用户目录的占用磁盘大小 (2) 监控/var/log下前 ...
- Linux下shell脚本实战之批量新建用户
Linux下shell脚本实战之批量新建用户 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.使用提供的user.txt用户列表 2.批量新建us ...
- linux中rm删除的文件是否可以恢复,Linux下用rm删除的文件的恢复方法
Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2008-08/14744.htm lin ...
- Linux下shell脚本之双色球摇号脚本
Linux下shell脚本之双色球摇号脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.编写脚本Lottery.sh,模拟摇号过程 2.6位数 ...
- linux下shell脚本启动其他可执行程序
linux下shell脚本启动其他可执行程序 零.前言 一.C++代码 二.shell脚本 三.shell运行效果 零.前言 linux下的项目中经常需要使用shell脚本去启动其他程序的操作,下面是 ...
- shell脚本 java jar_linux下shell脚本执行jar文件
最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...
- linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...
前言 服务器.vps,难免会遇到各种问题,丢失数据,则必然痛心疾首啊!!! 数据无价,so建议养成定期备份的习惯!而且,要多备份几份,本地.网盘.FTP空间等,都多保存几份! 这里,就为大家带来一个l ...
最新文章
- SD-WAN:MSP连接
- Android抓包方法(一)之Fiddler代理
- 洛谷 P1663 山
- 项目管理概述学习记录(一)
- 关于Git的几个使用技巧
- 情怀满满 新一代观影神器坚果1895
- mysql同步到另一台服务器_mysql两台服务器主从同步
- java中input表单中的type=date返回类型【切记】
- openmv串口数据 串口助手_第三课使用pyserial来接收和发送串口数据
- RabbitMQ和Kafka的显著差异(3)
- SQL Server时间粒度系列----第9节时间粒度示例演示
- glusterfs的一些基本知识
- 经典检索算法:BM25算法
- 利用Java发送邮件(含附件)的例子
- ROS教程之在自己键盘上控制小海龟移动
- 一文看懂数字孪生,工信部权威白皮书
- Chrome支持的MP4编解码器有限
- 为什么需要Code Review?
- 2023 最新计算机视觉学习路线(入门篇)
- HashCat配GPU
热门文章
- Windows下Python 3.7.1安装
- phpstudy下的mysql升级
- 唯一聚集索引上的唯一和非唯一非聚集索引
- 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
- 企业分布式微服务云SpringCloud SpringBoot mybatis (七)高可用的分布式配置中心(Spring Cloud Config)...
- VMware 6.5开始,VMware vSphere ESXI只能通过浏览器访问
- 6条可以成为更好程序员的建议
- 如何为 Flask Web 应用配置 Nginx
- Python奇遇记:数据结构窥探2
- JavaCollection