linux定时任务

Rudy 2024-10-10 41 10/10

因上级工作项目需求,要把终端日志备份放到当天日期的目录,命名为.log+日期,12点更新清除7天前的内容

现做测试,2分钟更新一次,删除三分钟之前备份的日志

1.创建sh文件,命名为cleanLog.sh

touch cleanLog.sh

2.赋予可执行权限

chmod 777 cleanLog.sh
vim cleanLog.sh
logPath=/home/demo5
d=`date +%Y-%m-%d_%H:%M`
cd ${logPath}

# 确保备份目录存在
if [ ! -d ${logPath}/logbk ]; then
  echo "Creating log backup directory: logbk"
  mkdir logbk
fi

# 创建新的备份目录 log.${d},并复制日志内容
backup_dir=${logPath}/logbk/log.${d}
if [ ! -d "${backup_dir}" ]; then
  echo "Creating backup directory: ${backup_dir}"
  mkdir -p "${backup_dir}"

  # 确保 log 是一个目录并复制其中的日志文件
  if [ -d ${logPath}/log ]; then
    echo "Copying logs to ${backup_dir}"
    cp -r ${logPath}/log/* "${backup_dir}/"

  else
    echo "Log directory does not exist: ${logPath}/log"
  fi
else
  echo "Backup already exists for this timestamp: ${backup_dir}"
fi

# 删除3分钟之前的备份
echo "Deleting log backups older than 3 minutes"

# 清空内容
find ${logPath}/log -type f -name "*.log" -exec sh -c '> "$1"' _ {} \;
# 删除文件
find ${logPath}/logbk -mmin +3 -name "log.*" -exec rm -rf {} \;

3.设置 脚本启动时间

crontab -e
*/2 * * * * /bin/bash /home/demo5/cleanLog.sh

4.查看执行日志

tail -f /var/log/cron

linux定时任务

5.注:启动时间(分钟/小时/日/月/星期几0-7,0)

# 每分钟执行一次命令
* * * * * /path/to/command
# 在每天的午夜12点(午夜是午夜,所以这是两个不同的时间设置)
0 0 * * * /path/to/command
# 每个星期日的午夜12点
0 0 * * 0 /path/to/command
# 每个月的第一天的午夜12点
0 0 1 * * /path/to/command

- THE END -
最后修改:2026年5月9日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论