当前位置: 首页 > 编程笔记 >

Linux使用shell脚本定时删除历史日志文件

丌官寒
2023-03-14
本文向大家介绍Linux使用shell脚本定时删除历史日志文件,包括了Linux使用shell脚本定时删除历史日志文件的使用技巧和注意事项,需要的朋友参考一下

1、tools目录文件结构

[root@www tools]# tree tools/
tools/
├── bin
│  ├── del_history_files
│ 
└── etc
  ├── del_history_files.cfg
 
2 directories, 2 files

2、删除历史文件脚本 del_history_files

[root@www tools]# more tools/bin/del_history_files
#!/bin/sh
 
# 删除指定目录下,文件时间早于指定时间节点的文件,时间粒度:小时
# 配置文件格式 : 需清理的目录=小时数
#
#
# define restricted path
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
 
# adirname - return absolute dirname of given file
adirname() { odir=`pwd`; cd `dirname $1`; pwd; cd "${odir}"; }
 
 
# ---------
# constants
# ---------
MYNAM=`basename "$0"`
MYDIR=`adirname "$0"`
MYCFG="${MYDIR}/../etc/${MYNAM}.cfg"
MYTMP="${MYDIR}/../tmp"
MYLCK="${MYTMP}/${MYNAM}.lock"
 
# perform some locking (as good as it gets in a shell)
[ -s "${MYLCK}" ] && kill -0 `cat "${MYLCK}"` 2>/dev/null &&
    die "${MYNAM}: already running!"
echo "$$" > "${MYLCK}"
 
PATHS=(`cat ${MYCFG}`)
for PP in ${PATHS[@]}
do
  APP_PATH=`echo ${PP} | awk -F'=' '{print $1}'`
  N=`echo ${PP} | awk -F'=' '{print $2}'`
    if [ -d ${APP_PATH} ] ; then
    T=`/bin/date --date "${N} hours ago" "+%Y%m%d%H%M"`
    TMP_FILE="/tmp/`echo ${PP} | md5sum | awk '{print $1}'`"
    touch -t ${T} ${TMP_FILE}
    find ${APP_PATH} ! -newer ${TMP_FILE} -type f -print0 | xargs -0 -n 100 rm -rf
    find ${APP_PATH} -type d -empty -print0 | xargs -0 -n 100 rm -rf &> /dev/null
    fi
done
 
rm -rf ${MYLCK}

3、删除历史文件脚本的配置文件 del_history_files.cfg

[root@www tools]# more tools/etc/del_history_files.cfg
#需清理的目录=小时数
/home/logs/nginx=720
/home/logs/varnish=720

4、crontab 执行即可

[root@www tools]# more /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
#clear old logs
00 6 * * * root /home/tools/bin/del_history_files

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍使用vbs脚本定时删除N天前的文件,包括了使用vbs脚本定时删除N天前的文件的使用技巧和注意事项,需要的朋友参考一下 脚本放在定时任务里代替服务定时执行一些操作比较方便,下面是实现删除文件夹下N天前创建的文件的vbs脚本,在配置文件 DelFolderList.txt 中配置要删除的文件路径,ONLY-DEL-FILES 下的路径 是只删除其下的文件,不删除其内的子目录的文件。DEL

  • 本文向大家介绍Linux定时删除日志的简单实现方法,包括了Linux定时删除日志的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 导语 linux是一个很能自动产生文件的系统,日志、邮件、备份等。虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情。 项目中会生成各种各样的日志,随着时间的推移,日志也是越来越多。超过一定时间的日志就没有了参

  • git log命令可以显示所有的提交(commit)。 ...... $ git log v2.5.. # commits since (not reachable from) v2.5 $ git log test..master # commits reachable from master but not test $ git log master..test # comm

  • 我知道用bash shell删除bash历史记录的两种方法 1.rm~/.bash_history 2.历史-C 错误: rm:~/.bash_history:没有这样的文件或目录 2.历史-C 文件“test.py”,第8行,在subprocess.call(['history','-c'])文件“/system/library/framework/python.framework/versio

  • 本文向大家介绍Shell脚本实现递归删除空文件夹,包括了Shell脚本实现递归删除空文件夹的使用技巧和注意事项,需要的朋友参考一下 有时我们需要递归删除空文件夹,网上找了一下,没有发现比较好的Shell脚本,于是自己动手写了一个 脚本 脚本的内容很简单,就是遍历目录,找出空文件夹,然后删除。 使用 假如脚本文件为dedr.sh,我们测试的文件结构为: 运行脚本: 删除的文件: 结果: 我们可以看到