📜  截断 docker 日志 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:54:25.726000             🧑  作者: Mango

截断 Docker 日志 - Shell/Bash

在使用 Docker 运行应用程序时,容器的日志是非常重要的。然而,随着时间的推移,日志文件的大小可能会变得非常大,这会阻碍您的 Docker 运行。因此,您需要及时清理日志文件。

本文将介绍如何使用 Shell/Bash 脚本截断 Docker 日志。

Step 1:找到 Docker 日志文件

首先,您需要找到 Docker 容器的日志文件路径。这通常是 /var/lib/docker/containers/[container-id]/[container-id]-json.log。您可以使用以下命令来查找日志文件:

docker inspect --format='{{.LogPath}}' [container-name-or-id]
Step 2:截断 Docker 日志

一旦您找到了 Docker 日志文件,接下来的步骤就很简单了。您可以使用以下 Shell/Bash 脚本截断 Docker 日志:

#!/bin/bash
set -e

LOG_FILE="/var/lib/docker/containers/[container-id]/[container-id]-json.log"
MAX_SIZE="10M"

if [ ! -f "$LOG_FILE" ]; then
  echo "$LOG_FILE does not exist."
  exit 1
fi

if [ "$(du "$LOG_FILE" | cut -f1)" -gt "$(numfmt --from=iec "$MAX_SIZE")" ]; then
  echo "Truncating $LOG_FILE."
  tail -n "$(numfmt --from=iec "$MAX_SIZE" | cut -d' ' -f1)" "$LOG_FILE" > "$LOG_FILE.tmp"
  mv "$LOG_FILE.tmp" "$LOG_FILE"
fi

这个脚本会检查 Docker 日志文件的大小是否超过了 $MAX_SIZE,如果是的话,它将截断文件。默认情况下,日志文件将截断为 10MB 大小。

该脚本使用了 numfmt 命令将 $MAX_SIZE 转换为字节大小。它还使用了 tail 命令来截断日志文件,并使用了 .tmp 文件来暂存截断后的内容,以免丢失。

Conclusion

截断 Docker 日志是一个很重要的任务,因为它可以帮助您释放磁盘空间,以及确保 Docker 日志的可读性。使用上述的 Shell/Bash 脚本,您可以轻松地截断 Docker 日志文件。喜欢本文的话,欢迎点个赞!