代码之家  ›  专栏  ›  技术社区  ›  l0b0

杀死Bash复制子进程以模拟崩溃

  •  2
  • l0b0  · 技术社区  · 14 年前

    我尝试测试一个Bash脚本,它单独复制文件并对每个文件执行一些操作。它是用来恢复的,所以我想确保测试这个正确。什么是一个优雅的解决方案,以杀死或以其他方式中止从测试脚本进行复制的脚本,确保它没有时间复制和处理所有文件?

    我有PID的子进程,我可以改变两个脚本的源代码,我可以创建任意大的文件进行测试。

    澄清:我在背景中用 & ,获取PID为 $! kill -9 $PID ,但过程没有中断-文件复制成功。即使文件足够大,创建它们(使用 dd /dev/urandom )需要几秒钟。

    是不是只有在 cp kill 命令太迟了。

    2 回复  |  直到 12 年前
        1
  •  2
  •   Frédéric Hamidi    14 年前

    发送 KILL

    kill -KILL $childpid
    
        2
  •  0
  •   dietbuddha    14 年前

    你可以尝试使用大文件和睡眠来玩计时游戏。测试的可重复性可能有问题。

    您可以将限制代码添加到测试脚本中,然后将其完全限制。您可以通过传入以下值来执行限制代码:

    • sleep
    • 要处理的文件数
    • 脚本结束后的秒数
    • nice

    美好的 'ing可能会给您带来不同的结果,设置一个后台进程在N秒后终止您的脚本也是如此。你也可以在同一时间尝试其中的一个以上,这可能会给你想要的控制。例如,接受sleep值和kill seconds可以提供细粒度的节流控制。