我想将多个bash脚本保存到同一个日志文件中,以便能够精确地监视哪个事件发生在另一个事件之前。
为了创建一些测试,我几乎同时执行了三个bash脚本。
文件A.sh:
#!/bin/bash
watch -n 1 'echo AAA $(date '+%Y%m%d%H%M%S%N') >> mylog.log'
B.sh 文件
#!/bin/bash
watch -n 1 'echo BBB $(date '+%Y%m%d%H%M%S%N') >> mylog.log'
C.sh 文件
#!/bin/bash
watch -n 1 'echo CCC $(date '+%Y%m%d%H%M%S%N') >> mylog.log'
在日志文件中,我看到:
AAA 20220211083057445268276
BBB 20220211083058398227435
CCC 20220211083058417044373
AAA 20220211083058453956479
BBB 20220211083059419856946
CCC 20220211083059436848192
所有这些看起来都很好。
如果两个bash脚本同时写入日志文件,会发生什么情况?是否实现了一些文件锁定,所以B.sh必须等到A.sh写入日志文件,或者B.sh只覆盖A.sh记录?
As"rici";声明,如果您在打开然后并发访问时使用"append"模式,这应该不是问题,但是,结果可能不是您期望的顺序。在日志条目中添加时间戳可能有助于消除它们的混乱。
并发访问还意味着进程将不得不等待一段时间。我不希望等待很长时间,但这也取决于进程的附加频率。等待可能会给您带来进一步的问题,尤其是在并发访问尝试次数增加(大量进程或无休止循环(的情况下。
我不太熟悉,但你可能想看看syslog系统或类似的系统;它可能是一个替代选项,可以消除并发文件处理/写入的一些特性(同时引入其他特性;-((。