加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

是bash>重定向原子?

发布时间:2020-12-16 01:49:04 所属栏目:安全 来源:网络整理
导读:我的crontab工作遇到了奇怪的问题.我的crontab作业执行以下操作: program file 但有时文件却充满了我无法解释的随机数据. 我想知道它是否可能是以前的crontab作业需要更长的时间才能运行并且它以某种方式将其文件中的结果与当前的crontab作业混合在一起?
我的crontab工作遇到了奇怪的问题.我的crontab作业执行以下操作:

program > file

但有时文件却充满了我无法解释的随机数据.

我想知道它是否可能是以前的crontab作业需要更长的时间才能运行并且它以某种方式将其文件中的结果与当前的crontab作业混合在一起?

总的来说,我的问题是:是>操作原子?意思是两个程序做>文件,然后最后一个完成将其数据存档?

解决方法

不,这不是原子的.甚至没有一点原子.

重定向有两个作用:

>它按名称打开文件,必要时创建它.
>它截断文件.

之后,启动该实用程序,将其stdin分配给打开的文件.

如果两个脚本同时或多或少地执行相同的操作,它们最终都会写入相同的文件,但由于它们将具有独立的文件描述符,因此每个进程将覆盖其他进程的输出,从而导致字节的大量交错,一些从一个过程,一些从另一个过程.

另一个常见的竞争条件涉及在实用程序开始执行之前文件被截断(由shell).因此,即使该实用程序只将一行写入该文件,读取该文件的并发实用程序也可能会发现它是空的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读