最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何根據(jù)docker服務(wù)保存日志腳本(時間可選版本)

 更新時間:2025年11月11日 09:03:45   作者:???傀儡師  
在開發(fā)基于Docker的應(yīng)用程序時,能夠在日志中查找特定信息并將此數(shù)據(jù)保存到文件中可以加快故障排除和調(diào)試過程,這篇文章主要介紹了如何根據(jù)docker服務(wù)保存日志腳本(時間可選版本)的相關(guān)資料,需要的朋友可以參考下
#!/bin/bash

# 獲取docker ps輸出,提取容器ID和名稱,并存入數(shù)組
container_ids=($(docker ps -q))
container_names=($(docker ps --format '{{.Names}}'))

# 檢查是否有運行中的容器
if [ ${#container_ids[@]} -eq 0 ]; then
    echo "No running containers found."
    exit 1
fi

# 顯示容器列表供用戶選擇
echo "Running containers:"
for i in "${!container_ids[@]}"; do
    echo "[$i] ${container_names[$i]} (${container_ids[$i]})"
done

# 請求用戶選擇容器
read -p "Enter the index of the container to view logs: " choice

# 驗證用戶輸入是否為有效數(shù)字
re='^[0-9]+$'
if ! [[ $choice =~ $re ]]; then
   echo "Error: Invalid input, please enter a number."
   exit 1
fi

# 驗證用戶選擇是否在范圍內(nèi)
if (( choice < 0 || choice >= ${#container_ids[@]} )); then
    echo "Error: Index out of range."
    exit 1
fi

# 獲取用戶選擇的容器ID和名稱
selected_container_id="${container_ids[$choice]}"
selected_container_name="${container_names[$choice]}"

# 功能選擇菜單
echo ""
echo "Select an option:"
echo "[1] View logs in terminal"
echo "[2] Save logs to file"
read -p "Enter your choice (1 or 2): " option

case $option in
    1)
        # 查看日志功能
        read -p "Enter the number of lines to display (default is 1000): " lines
        lines=${lines:-1000}

        read -p "Enter a keyword to search for in the logs (leave empty for no search): " keyword

        if [ -z "$keyword" ]; then
            docker logs -f --tail "$lines" "$selected_container_id"
        else
            docker logs -f --tail "$lines" "$selected_container_id" | grep "$keyword"
        fi
        ;;
    2)
        # 保存日志功能
        echo ""
        echo "Save log options:"
        echo "[1] Last 2 days (default)"
        echo "[2] Last 24 hours"
        echo "[3] Last 7 days"
        echo "[4] Custom hours"
        echo "[5] All logs (since container start)"
        read -p "Enter your choice (1-5): " time_option

        case $time_option in
            1|"")
                # 最近2天 = 48小時
                since_time="48h"
                since_display="2 days (48 hours)"
                ;;
            2)
                since_time="24h"
                since_display="24 hours"
                ;;
            3)
                since_time="168h"
                since_display="7 days (168 hours)"
                ;;
            4)
                read -p "Enter number of hours: " custom_hours
                since_time="${custom_hours}h"
                since_display="${custom_hours} hours"
                ;;
            5)
                since_time=""
                since_display="all logs (since container start)"
                ;;
            *)
                echo "Invalid option, using default (2 days)"
                since_time="48h"
                since_display="2 days (48 hours)"
                ;;
        esac

        # 生成文件名
        timestamp=$(date +"%Y%m%d_%H%M%S")
        filename="${selected_container_name}_logs_${timestamp}.log"
        
        echo "Saving logs for container: $selected_container_name"
        echo "Time range: $since_display"
        echo "File: $filename"
        echo ""

        # 保存日志(根據(jù)是否指定時間范圍使用不同的命令)
        if [ -z "$since_time" ]; then
            docker logs "$selected_container_id" > "$filename"
        else
            docker logs --since "$since_time" "$selected_container_id" > "$filename"
        fi
        
        if [ $? -eq 0 ]; then
            echo "Logs successfully saved to: $filename"
            echo "File size: $(du -h "$filename" | cut -f1)"
            echo "Lines saved: $(wc -l < "$filename")"
        else
            echo "Error: Failed to save logs"
            # 清理可能創(chuàng)建的空文件
            if [ -f "$filename" ] && [ ! -s "$filename" ]; then
                rm "$filename"
            fi
            exit 1
        fi
        ;;
    *)
        echo "Invalid option selected"
        exit 1
        ;;
esac

正確的時間格式:Docker logs 的 --since 參數(shù)支持以下格式:
10m - 10分鐘
2h - 2小時
30h - 30小時
2007-01-02T15:04:05 - 具體時間戳
提供多個預(yù)設(shè)選項:
2天 = 48小時
24小時
7天 = 168小時
自定義小時數(shù)
所有日志
更好的錯誤處理:如果保存失敗,會清理空文件
Docker logs --since 支持的格式:
10m - 10分鐘前到現(xiàn)在
1h30m - 1小時30分鐘前到現(xiàn)在
2h - 2小時前到現(xiàn)在
2013-01-02T13:23:37 - 從特定時間點開始
現(xiàn)在腳本應(yīng)該能正常工作,不會出現(xiàn)時間格式錯誤了!

到此這篇關(guān)于如何根據(jù)docker服務(wù)保存日志腳本的文章就介紹到這了,更多相關(guān)docker服務(wù)保存日志腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • docker pull拉取超時的解決方案

    docker pull拉取超時的解決方案

    這篇文章主要介紹了docker pull拉取超時的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker?build與Dockerfile問題

    docker?build與Dockerfile問題

    這篇文章主要介紹了docker?build與Dockerfile問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • CentOS7 禁用Transparent Huge Pages的實現(xiàn)方法

    CentOS7 禁用Transparent Huge Pages的實現(xiàn)方法

    這篇文章主要介紹了 CentOS7 禁用Transparent Huge Pages的實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 基于Docker搭建Redis主從集群的實現(xiàn)

    基于Docker搭建Redis主從集群的實現(xiàn)

    本文基于Docker+Redis5.0.5版本,通過cluster方式創(chuàng)建一個6個redis實例的主從集群,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 使用Portainer部署Docker容器的項目實踐

    使用Portainer部署Docker容器的項目實踐

    這篇文章主要介紹了使用Portainer部署Docker容器的項目實踐,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Docker部署Rabbitmq容器實現(xiàn)過程解析

    Docker部署Rabbitmq容器實現(xiàn)過程解析

    這篇文章主要介紹了Docker部署Rabbitmq容器實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Docker service命令詳解(小結(jié))

    Docker service命令詳解(小結(jié))

    這篇文章主要介紹了Docker service命令詳解(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Docker Compose安裝部署PostgreSQL數(shù)據(jù)庫的實現(xiàn)步驟

    Docker Compose安裝部署PostgreSQL數(shù)據(jù)庫的實現(xiàn)步驟

    本文主要介紹了使用DockerCompose在Linux服務(wù)器上部署PostgreSQL,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • docker安裝nacos并配置數(shù)據(jù)庫的全過程

    docker安裝nacos并配置數(shù)據(jù)庫的全過程

    這篇文章主要給大家介紹了關(guān)于docker安裝nacos并配置數(shù)據(jù)庫的相關(guān)資料, Nacos是SpringCloudAlibaba架構(gòu)中最重要的組件,Nacos 是一個更易于幫助構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置和服務(wù)管理平臺,文中介紹的非常信息,需要的朋友可以參考下
    2023-09-09
  • 使用docker安裝hadoop的實現(xiàn)過程

    使用docker安裝hadoop的實現(xiàn)過程

    這篇文章主要介紹了使用docker安裝hadoop的詳細過程,本文給大家講解的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01

最新評論

东乡县| 柳江县| 买车| 德化县| 洞口县| 朝阳区| 遂川县| 双桥区| 延安市| 绥阳县| 封丘县| 临泉县| 罗城| 名山县| 盖州市| 涞源县| 江口县| 霍邱县| 灵丘县| 固原市| 安远县| 铜川市| 钦州市| 彰化市| 铜陵市| 个旧市| 体育| 六枝特区| 深圳市| 昔阳县| 阿尔山市| 渝北区| 蒙自县| 海伦市| 卢湾区| 北流市| 东莞市| 汝南县| 蕲春县| 当雄县| 称多县|