Bash 脚本关闭时是否删除日志文件? 我有一个脚本,每分钟都将其状态记录到一个文件中 然后,状态栏显示此日志的内容
当脚本被中止时,我对日志不感兴趣,因为它已经过时了。我想把它删除 是否可能有一个文件仅在脚本运行时存在,否则将消失 我知道我可以编写另一个脚本定期删除日志,但我正在寻找更有效的解决方案。尝试以下方法:Bash 脚本关闭时是否删除日志文件? 我有一个脚本,每分钟都将其状态记录到一个文件中 然后,状态栏显示此日志的内容,bash,logging,Bash,Logging,当脚本被中止时,我对日志不感兴趣,因为它已经过时了。我想把它删除 是否可能有一个文件仅在脚本运行时存在,否则将消失 我知道我可以编写另一个脚本定期删除日志,但我正在寻找更有效的解决方案。尝试以下方法: #!/bin/bash trap 'rm /path/to/log' EXIT TERM # ... 除了“sputnick”提到的陷阱之外,您可能还希望该文件是显式临时的。临时文件的缺点是,它可能会以一个不方便的路径结束,如果您希望能够在命令行上使用它,这将很重要 要创建临时文件,请使用m
#!/bin/bash
trap 'rm /path/to/log' EXIT TERM
# ...
除了“sputnick”提到的陷阱之外,您可能还希望该文件是显式临时的。临时文件的缺点是,它可能会以一个不方便的路径结束,如果您希望能够在命令行上使用它,这将很重要 要创建临时文件,请使用
mktemp
,大致如下:
tempFile="$(mktemp "${TMPDIR:-/tmp/}$(basename "$0")-XXXXX")"
这将(a)在临时文件名中包含脚本的名称,以及(b)使用$TMPDIR
作为基本目录(如果已设置),但默认为/tmp
,这通常是一种良好的做法
至于陷阱
,我认为您应该关注的主要信号是术语
,您还需要捕获伪信号退出
。我更喜欢使用信号名称,而不是不太方便携带的号码:
trap 'rm -f "${tempFile}"' EXIT TERM
使用
trap'rm/path/to/log'0112 3 15
,我的脚本不再以^C终止。但是,它与trap'rm/path/to/log'退出条件的预期效果一样。实际上trap'cmd…'退出
就足够了。它将涵盖由INT
,TERM
。。。如果脚本被TERM
杀死,那么trap'cmd…“EXIT TERM
将运行cmd两次。