我有一个在后台运行的 shell 脚本,它唯一做的就是运行 1 个命令,其中的 STDOUT 被附加到一个文件中。
my_blocking_command >> my_file
我想阻止行数增长太多,所以我运行:
[ "$(cat my_file)" -ge 30 ] && tail -n20 my_file | sponge my_file
当文件被覆盖时,问题就会出现 - 文件描述符不再指向当前文件my_file
-my_blocking_command
写入的文件描述符不指向我想要的文件。
我如何确保命令输出的所有内容始终重定向到my_file
,即使它被覆盖? (跟随名称,而不是文件描述符,例如tail --follow=name
)
或者也许有更好的方法来做到这一点?