Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 脚本关闭时是否删除日志文件? 我有一个脚本,每分钟都将其状态记录到一个文件中 然后,状态栏显示此日志的内容_Bash_Logging - Fatal编程技术网

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两次。