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:系统定时任务的家目录。