Linux服务器如何实现定时任务清理日志文件

提示这是我的个人IT资源网站,所有资源都免费,注册登录后就可以看到密码,需要什么大家尽情选取!
总结一下linux服务器定时任务清理日志的操作,以便以后用到可以返过头看看。

其实linux的定时任务和windows的差不多,都是有一个后台程序一直跑着,以分钟为单位去执行定时任务文件的所有任务文件。

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程

对应的就是系统的定时任务文件了,路径为/etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
"crontab" 15L, 451C                                             

上面是原始文件的内容,可以看到下面已经给我们做了一些解释了,时间粒度为分钟、小时、日期、月、星期,后面是用户,接着就是我们要执行的脚本文件了

那么我们要新增一个定时任务,步骤是什么呢

一、首先创建我们的脚本文件,脚本文件的位置,大家自行找一个地方,起一个意思明显的名字,清理日志,我起的名字为clear_logs.sh,并且创建了一个crontab-file的文件夹,可以将所有需要定时任务执行的脚本文件都放在下面

创建文件夹

mkdir crontab-file

进入文件夹

cd crontab-file

编辑文件内容并保存

vim clear_logs.sh

文件内容

#!/bin/sh
find /home/data/log/ -mtime +20 -name "*.log" -exec rm -rf '{}' \;

~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
"clear_logs.sh" 3L, 78C                                                                          

解释一下上面文件的内容,第一行#!/bin/sh,代表文件为脚本文件,下面一行则是我们要执行的脚本,我们来解读一下这条脚本命令
find 查找命令
/home/data/log/ 清除日志的目录(这个路径为绝对路径)
-mtime +20 文件修改时间为最近20天的(这个值为可变的,最近30天,就是30)
-name “*.log” 清除文件名称
-exec rm -rf ‘{}’ ; 这个是固定的写法,执行删除

编辑完之后,记得保存

wq

我们需要将文件的权限改一下,不然无法执行

chmod 755 clear_logs.sh

创建完之后,我们知道这个脚本文件的路径为,/个人选择存放的目录/crontab-file/clear_logs.sh

二、创建完脚本文件后,我们需要去定时任务文件增加一条定时任务
编辑定时任务文件

vim /etc/crontab

点击i,进入可编辑模式,在最后一行,加上我们的定时任务命令,例如每天的零点30分执行一次

30 0 * * * root /个人选择存放的目录/crontab-file/clear_logs.sh

退出保存

wq

然后我们需要重启一下定时任务守护进程来使定时任务文件生效

systemctl restart crond

以上就是Linux服务器实现定时任务清理日志的步骤,大家如果有条件可以在测试或者个人服务器实践一下,心里有底😊
在这里插入图片描述

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以用 `cron` 来实现定时任务。 要想在 Linux 下定时清空文件内容,可以这样写脚本: ```bash #!/bin/bash # 设置要清空文件的路径 file_path="/path/to/file" # 在文件中写入空字符串,从而清空文件内容 echo "" > "$file_path" # 定时记录文件大小 while true; do # 获取文件大小 file_size=$(stat -c%s "$file_path") # 将文件大小写入另一个文件中 echo "$file_size" >> "/path/to/another/file" # 每隔一段时间(例如 1 小时)再次记录文件大小 sleep 3600 done ``` 然后,可以使用 `crontab` 命令来设置定时任务。例如,如果要每天凌晨 0 点清空文件内容,可以在命令行中输入: ```bash 0 0 * * * /path/to/script.sh ``` 这样,每天凌晨 0 点就会执行脚本,清空文件内容。 ### 回答2: 实现Linux下定时清空文件内容和定时记录文件大小可以使用Shell脚本来实现。以下是一个简单的Shell脚本示例: ```bash #!/bin/bash # 定义文件路径 file_path="/path/to/file.txt" # 定义清空文件内容的函数 clear_file() { echo "" > $file_path } # 定义记录文件大小的函数 record_file_size() { file_size=$(du -h $file_path | awk '{ print $1 }') echo "$(date +"%Y-%m-%d %H:%M:%S") File Size: $file_size" >> file_size_record.txt } # 定义定时清空文件内容的任务 clear_task() { clear_file echo "$(date +"%Y-%m-%d %H:%M:%S") File Content Cleared" >> file_operation_log.txt } # 定义定时记录文件大小的任务 record_task() { record_file_size echo "$(date +"%Y-%m-%d %H:%M:%S") File Size Recorded" >> file_operation_log.txt } # 设置定时任务 # 定时清空文件内容,每天凌晨12点执行 # 定时记录文件大小,每小时执行一次 (crontab -l 2>/dev/null; echo "0 0 * * * /path/to/script.sh clear_task") | crontab - (crontab -l 2>/dev/null; echo "0 * * * * /path/to/script.sh record_task") | crontab - ``` ### 回答3: 在 Linux 下,可以使用 shell 脚本来实现定时清空文件内容和定时记录文件大小的功能。 首先,需要使用 `cron` 这个定时任务工具,它可以在指定的时间间隔内自动运行脚本。我们可以创建一个 shell 脚本文件,比如 `cleanup_script.sh`,用来实现清空文件内容和记录文件大小的功能。 下面是一个示例的脚本: ```bash #!/bin/bash # 清空文件内容 function clear_file() { echo -n > filename.txt echo "[$(date)] 文件内容已清空" >> log.txt } # 记录文件大小 function record_file_size() { file_size=$(stat -c%s filename.txt) echo "[$(date)] 文件大小为: $file_size bytes" >> log.txt } # 在脚本运行时,先清空文件内容,再记录文件大小 clear_file record_file_size ``` 在脚本中,`clear_file` 函数使用 `echo -n > filename.txt` 命令将文件内容清空,并将清空操作的时间记录到 `log.txt` 文件中。 `record_file_size` 函数使用 `stat -c%s filename.txt` 命令获取文件的大小,并将大小和记录时间写入 `log.txt` 文件。 你可以根据自己的需求修改脚本中的文件名和日志文件名。 接下来,可以使用 `cron` 来配置定时任务,例如每天的凌晨 3 点清空文件内容并记录文件大小。运行 `crontab -e` 命令可以编辑定时任务: ```bash 0 3 * * * /bin/bash /path/to/cleanup_script.sh ``` 保存并关闭文件,这样定时任务就配置完成了。脚本将在每天的凌晨 3 点自动执行,清空文件内容并记录文件大小。 希望以上内容对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值