海边的曼彻斯特₡ 2023-09-04 09:45 采纳率: 50%
浏览 2

Linux日志重新打开时恢复到上次关闭的位置,shell脚本实现

请问一下各位,我想让Linux日志重新打开时恢复到上次关闭的位置,怎么才能使用shell脚本实现、

  • 写回答

2条回答 默认 最新

  • qq_37749055 2023-09-04 11:37
    关注

    要让Linux日志在重新打开时恢复到上次关闭的位置,您可以使用以下shell脚本:

    #!/bin/bash
    
    log_file="/path/to/logfile.log"
    
    if [ -f "$log_file" ]; then
        # 获取日志文件的最后几行,以获取文件关闭的位置
        last_lines=$(tail -n 10 "$log_file")
    
        # 截取日志文件关闭时的最后一行
        last_line=$(echo "$last_lines" | tail -n 1)
    
        # 提取日志关闭时的行号
        line_number=$(echo "$last_line" | awk '{print $1}')
    
        # 重新打开日志文件,并将文件指针移动到最后一行的下一行
        exec 3<> "$log_file"
        seek=$((line_number + 1))
        dd iflag=skip_bytes oflag=seek_bytes obs=1 of=/dev/null count=$seek bs=1 skip=$line_number 3<<EOF
    EOF
        exec 3>&-
    else
        echo "日志文件不存在"
    fi
    

    请确保将/path/to/logfile.log替换为您实际的日志文件路径。该脚本首先检查日志文件是否存在,然后使用tail命令获取文件的最后几行以找到文件关闭的位置。然后,它使用exec命令将文件描述符3重定向到日志文件,并使用dd命令将文件指针移动到上次关闭位置的下一行。最后,它关闭文件描述符3。

    请注意,此脚本假定日志文件以数字行号开头,例如:

    1 This is line 1
    2 This is line 2
    3 This is line 3
    

    如果您的日志文件格式与此不同,可能需要根据实际情况进行调整。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月4日

悬赏问题

  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 手游上号器是如何获取到游戏在微信平台的appid
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值