使用/ dev / urandom是否会破坏bash循环?(在非编程术语中为循环中断而中断)

冰箱

我的第一个bash脚本有点问题。

目的是制作一个带有x大小的数字的文件,然后制作另一个具有相同基名的文件,并且每次将数字加1直到满足MAXFILES。

filename.something.r0
filename.something.r1
filename.something.r2
filename.something.r3
filename.something.r4
filename.something.r5
filename.something.r6
filename.something.r7

每个文件具有相同的标头,然后充满随机性,直到达到500GB的文件大小...然后继续进行循环的下一个迭代。

#!/usr/bin/env bash
COUNT=0
MAXFILES=8
MAXSIZE=524288000
HEADER=$(cat header)

while [ $COUNT -lt $MAXFILES ]; do
{
        FILE="filename.something.r$COUNT"
        echo $HEADER > $FILE
        FILESIZE=$(stat -c%s $FILE)
        while [ $FILESIZE -lt $MAXSIZE ]; do
        {
            cat /dev/urandom >> $FILE
            FILESIZE=$(stat -c%s $FILE)
        }
        done
        ((++$COUNT))
        echo $COUNT
}
done

将会发生什么:文件继续超过MAXSIZE值,并且直到键盘中断才循环播放。

我不知道为什么它不起作用,并且怀疑它归因于/ dev / urandom不确定地运行。我认为这是标准行为。

原因:我很无聊

我知道这样做有“更好”的方法,但是没有我的工作方式就很烦人。特别是当我将其用作我的第一个bash脚本的项目时。

谢谢

转动

是的,您怀疑是这行给您带来麻烦:

 cat /dev/urandom >> $FILE

如果仅从shell提示符运行该命令,您将看到它永远运行。这是因为它/dev/urandom是一个无休止的特殊文件,只要您从中读取文件,它将为您提供更多数据。

为了使脚本正常工作,您需要从设备文件中读取特定数量的数据,通常是这样完成的dd

dd if=/dev/urandom bs=$NBYTES count=1 >> $FILE

其中$NBYTES一次要读取的字节数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

何时使用/ dev / random与/ dev / urandom

来自分类Dev

使用/ dev / random,/ dev / urandom生成随机数据

来自分类Dev

为什么perl,ruby使用/ dev / urandom

来自分类Dev

强制程序使用/ dev / urandom

来自分类Dev

强制程序使用/ dev / urandom

来自分类Dev

如何使用开关从while循环中中断?

来自分类Dev

在Java中仅使用/ dev / random

来自分类Dev

为什么在循环中无法读取/ dev / urandom

来自分类Dev

使用/ dev / urandom擦拭设备时使用'sync'

来自分类Dev

Bash - 使用从文件中读取的条件中断循环

来自分类Dev

对于大的随机数据需求,我应该使用“ / dev / random”还是“ / dev / urandom”?

来自分类Dev

使用DD,/ dev / zero或/ dev / urandom安全擦除驱动器?

来自分类Dev

在while循环中使用grep会中断循环

来自分类Dev

在while循环中使用grep会中断循环

来自分类Dev

使用 Handler() 中断 For 循环

来自分类Dev

使用/ dev / urandom生成具有ASCII码的文件?

来自分类Dev

使用“ else if”是否可以消除while循环中每个条件之后的中断时间?

来自分类Dev

是否可以使用用户输入进行“循环中断”?

来自分类Dev

使用Javascript中断Firebase中的循环

来自分类Dev

java中中断的方法,在while循环中使用时会不会中断线程?

来自分类Dev

在 OCaml 中使用 Lwt 时如何使循环中断

来自分类Dev

udev(/ dev)分区上的使用率为0%

来自分类Dev

如何使用bash扩展或替换列出/ dev / disks阵列的信息?

来自分类Dev

从/ dev / urandom读取的Bash脚本

来自分类Dev

从/ dev / urandom读取的Bash脚本

来自分类Dev

如何在使用dev的应用程序中公开页面

来自分类Dev

在dev env中,在某些URL上使用prod环境

来自分类Dev

使用Linux TimerFD在Dev Polly Reactor中实现超时

来自分类Dev

使用dd的/ dev / stdin中的“错误文件描述符”

Related 相关文章

  1. 1

    何时使用/ dev / random与/ dev / urandom

  2. 2

    使用/ dev / random,/ dev / urandom生成随机数据

  3. 3

    为什么perl,ruby使用/ dev / urandom

  4. 4

    强制程序使用/ dev / urandom

  5. 5

    强制程序使用/ dev / urandom

  6. 6

    如何使用开关从while循环中中断?

  7. 7

    在Java中仅使用/ dev / random

  8. 8

    为什么在循环中无法读取/ dev / urandom

  9. 9

    使用/ dev / urandom擦拭设备时使用'sync'

  10. 10

    Bash - 使用从文件中读取的条件中断循环

  11. 11

    对于大的随机数据需求,我应该使用“ / dev / random”还是“ / dev / urandom”?

  12. 12

    使用DD,/ dev / zero或/ dev / urandom安全擦除驱动器?

  13. 13

    在while循环中使用grep会中断循环

  14. 14

    在while循环中使用grep会中断循环

  15. 15

    使用 Handler() 中断 For 循环

  16. 16

    使用/ dev / urandom生成具有ASCII码的文件?

  17. 17

    使用“ else if”是否可以消除while循环中每个条件之后的中断时间?

  18. 18

    是否可以使用用户输入进行“循环中断”?

  19. 19

    使用Javascript中断Firebase中的循环

  20. 20

    java中中断的方法,在while循环中使用时会不会中断线程?

  21. 21

    在 OCaml 中使用 Lwt 时如何使循环中断

  22. 22

    udev(/ dev)分区上的使用率为0%

  23. 23

    如何使用bash扩展或替换列出/ dev / disks阵列的信息?

  24. 24

    从/ dev / urandom读取的Bash脚本

  25. 25

    从/ dev / urandom读取的Bash脚本

  26. 26

    如何在使用dev的应用程序中公开页面

  27. 27

    在dev env中,在某些URL上使用prod环境

  28. 28

    使用Linux TimerFD在Dev Polly Reactor中实现超时

  29. 29

    使用dd的/ dev / stdin中的“错误文件描述符”

热门标签

归档