linux 设置定时任务执行清理日志脚本

写在开头:

为了写博客而写博客,写一个定时清理日志流程,顺便复习一些linux命令

”知其然,不需要知其所以然“

反正就是一个到处复制粘贴大杂烩
 

流程:

0.查看磁盘占用情况

为什么要清理日志文件呢

因为写入日志一直在新增,会占据很多磁盘,早晚会爆炸的,所以要定时清理

所以先看看磁盘占用情况

命令:

# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       8.6G  6.7G  1.5G  82% /
tmpfs           250M   76K  250M   1% /dev/shm
/dev/sda1       291M   33M  244M  12% /boot
/dev/sr0        1.5G  1.5G     0 100% /media/Ubuntu 16.04 LTS i386

解释:

Used:已经使用的空间

Avail:可以使用的空间

Mounted on:挂载的目录

关于挂载,也理解了好久哦,反正就是Linux“一切皆文件”!
 

1.写一个shell脚本(.sh)

写入命令:

vi cleanlog.sh
i 切换到输入模式,以输入字符。
Esc 切换到一般模式
:wq!表示强制保存退出
:q!表示强制不保存退出,不对文件进行保存

脚本内容:

#! /bin/bash

find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;

实例命令:

find /usr/local/tomcat/logs/ -mtime +180 -name "*.log" -exec rm -rf {} \;

解释:

将/usr/local/tomcat/logs目录下所有180天前带".log"的文件删除

参数说明:

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell

(bash是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh...)

find:linux的查找命令,用户查找指定条件的文件;

/usr/local/tomcat/logs/ /opt/soft/log/:想要进行清理的任意目录;

-mtime:标准语句写法;

+180:查找180天前的文件,这里用数字代表天数;

".log":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;

-exec:固定写法;

rm -rf:强制删除文件,包括目录;

{} ; :固定写法,一对大括号+空格++;

另一个写法:

rm -rf `find 对应目录 -type f -mtime +180 -print`

查看脚本内容

more xx.sh

2.给脚本添加权限

命令:

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

实例命令:

chmod +777 cleanlog.sh

解释:

给cleanlog.sh赋予全部用户读写操作权限,是最大的权限值!

参数说明

r 读权限read 4

w 写权限write 2

x 操作权限execute 1

权限数字对应权限组说明:

总共分为4部分

【文件或文件夹】【owner权限】【group权限】【others权限】

【文件是-,文件夹是d】【r/w/x相加】【r/w/x相加】【r/w/x相加】

Linux档案的基本权限就有九个

分别是owner/group/others三种身份各有自己的read/write/execute权限。

查看文件权限

ll

解释:

linux下命令“ll”是“ls -l"的别名
 

3.设置定时任务

查看是否有定时任务

crontab -l 

新增调度任务

cronteb -e

脚本内容

SHELL=
PATH=
MAILTO=
HOME=

0    12   *   *   *   mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分  时   日   月  周  |《==============命令行=======================》|

实例

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin
MAILTO=chen
HOME=/data/backup
*/5 01-06,13-18 * * * ./userbackup.sh test

解释:

每天的1点到6点和13点到18点,每隔5分钟执行命令

参数说明:

SHELL:系统要使用哪个shell

PATH:系统定时任务执行的命令的路径,不要把这个PATH和系统环境变量认为是一样,二者没有关系,在系统环境变量里面配置的路径在这里不能生效。

MAILTO:用来接收邮件的用户,默认是root,邮箱的内容会保存在"/var/spool/mail/root"文件中。

HOME:系统定时任务的家目录。

原文地址:https://www.cnblogs.com/alwayszzj/p/15747673.html