/usr/bin/random 使用大量 CPU

kmo*_*ort 7 linux random qnx

使用 QNX 6.4.1,有一个名为的命令pidin times可以显示有关进程的信息。我认为这意味着PID信息。除其他外,您可以查看进程自启动以来使用了多少 CPU。

我有一个系统,/usr/sbin/random在系统运行了大约 10 个小时后,它显示了近 2 分钟的处理器利用率。这似乎很多,因为我的代码中没有任何内容调用/usr/sbin/random.

虽然现在有很多网络活动(UDP 和 TCP),所以我想知道网络驱动程序是否random因为数据包冲突而调用以获得动态冲突退避时间。

这个理论可能正确吗?(好吧,它的可信度有多大?)如果不是,还有什么我应该检查的吗?该系统目前存在昨天不存在的延迟问题,我想知道发生了什么。这个特殊的线索可能有助于隔离问题。


更新

使用的进一步调查nicinfo显示根本没有数据包冲突。所以有我的动态碰撞退避时间理论。还有其他想法吗?


另一个更新

虽然这有助于找到我的问题的答案(SSHD 使用的是随机的,当然!!),但要小心。如果您使用 SSH,它需要一个工作random来允许您登录。出于某种原因,我的脚本中的调用random.old不起作用,我几乎把我的嵌入式系统变砖了。所以要小心。

Jos*_*ber 4

疯狂的故障排除想法:制作一个蜜罐/穷人的进程会计。

  1. 进行备份/usr/bin/random

    cp -p /usr/bin/random /usr/bin/random.bak
    
    Run Code Online (Sandbox Code Playgroud)
  2. touch /tmp/who_is_calling_random.log ; chmod 622 /tmp/who_is_calling_random.log

  3. 替换/usr/bin/random为此 shell 脚本(请注意,如果需要,您可以使用与 /tmp 不同的路径,但请确保它是全局可写的)。

    #!/bin/sh
    echo "`date` $USER $$ $@" >> /tmp/who_is_calling_random.log
    /usr/bin/random.bak "$@"
    
    Run Code Online (Sandbox Code Playgroud)
  4. chmod 755 /usr/bin/random

  5. 重新启动系统。

  6. 查看蜜罐日志中收集的内容。这应该是使用随机程序背后的人/事的日志。

    tail -f /tmp/who_is_calling_random.log
    
    Run Code Online (Sandbox Code Playgroud)
  7. random从您在第 1 步中所做的备份进行恢复。

  8. 重启系统。