脚本关闭时删除日志文件?

时间:2013-03-22 00:07:59

标签: bash logging

  • 我有一个脚本,每分钟都会将其状态记录到一个文件中。
  • 然后状态栏显示此日志的内容。

当脚本中止时,日志对我来说并不感兴趣,因为它已经过时了。我希望它被删除。

是否可以让文件仅在脚本运行时存在并以其他方式消失?

我知道我可以编写另一个会定期删除日志的脚本,但我正在寻找更有效的解决方案。

2 个答案:

答案 0 :(得分:2)

试试这个:

#!/bin/bash

trap 'rm /path/to/log' EXIT TERM

# ...

答案 1 :(得分:1)

除了“sputnick”提到的陷阱之外,您可能还希望该文件是显式临时的。临时文件的缺点是它可能最终会出现一条不方便的路径,如果您希望能够在命令行上执行此操作,那么这很重要。

要制作临时文件,请按以下方式使用mktemp

tempFile="$(mktemp "${TMPDIR:-/tmp/}$(basename "$0")-XXXXX")"

这将(a)在临时文件名中包含脚本的名称,(b)如果设置,则使用$TMPDIR作为基本目录,但默认为/tmp,这通常是一种好习惯。

对于trap,我认为您应该关注的主要信号是TERM,并且您还希望捕获伪信号EXIT。我更喜欢将信号名称用于不那么便携的数字:

trap 'rm -f "${tempFile}"' EXIT TERM