gpt4 book ai didi

bash - 在 bash 脚本中保持文件永远打开

转载 作者:行者123 更新时间:2023-11-29 08:49:59 25 4
gpt4 key购买 nike

我需要一种方法让某个进程永远打开某个文件。这是我目前所拥有的示例:

sleep 1000 > myfile &

它工作了一千秒,但真的不想做一些复杂的 sleep /循环语句。 This post建议 catsleep 是无限的。所以我尝试了这个:

cat > myfile &

这看起来像是一个错误,不是吗?它似乎在命令行中工作,但在脚本中文件连接没有保持打开状态。还有其他想法吗?

最佳答案

除了使用后台进程,您还可以只使用 bash 打开其文件描述符之一:

exec 5>myfile 

(此处 exec 的特殊用途允许更改当前文件描述符重定向 - 有关详细信息,请参阅 man bash)。这会将文件描述符 5 打开到“myfile”(如果您不想清空文件,请使用 >>>)。

您可以稍后再次关闭该文件:

exec 5>&-

(一个可能的缺点是 FD 被 shell 同时运行的每个程序继承。大多数情况下这是无害的 - 例如你的 greps 和 seds 通常会忽略额外的 FD - 但在某些情况下它可能会很烦人,尤其是当你生成任何停留在周围的进程时(因为它们会使 FD 保持打开状态)。

注意:如果您使用的是更新版本的 bash (>4.1),您可以使用稍微不同的语法:

exec {fd}>myfile

这会分配一个新的文件描述符,并将其放入变量 fd 中。这有助于确保脚本不会意外覆盖彼此的文件描述符。要稍后关闭文件,请使用

exec {fd}>&-

关于bash - 在 bash 脚本中保持文件永远打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com