读取 FIFO 文件时避免 100% cpu

问题描述 投票:0回答:1

我需要读取 FIFO 文件,因为它到达 FIFO 文件中的 snmp 陷阱,我需要按顺序读取和处理它们。因此,我创建了一个 while (true) 循环来开始读取 FIFO 文件行并处理输出。问题是使用脚本后机器的 cpu 增加了 100%。我不知道是否在脚本中插入睡眠 3 秒。会读取 fifo 文件的所有行吗?或者可能是它没有读取所有行? 我需要降低脚本的 CPU 性能

我的代码是这样的:

while true
do
   if read linea; then
   initialice
   PintaInfo "$linea"
   ......

感谢并抱歉我的英语!

linux bash performance fifo
1个回答
0
投票

性能不佳,但是

while true; do
    if ! read linea; then
        sleep 0.1
    else
      initialice
      PintaInfo "$linea"
    fi

应该可以解决问题。 (理想情况下应该使用 inotifywait 而不是 sleep,但在本地测试时我无法让 inotifywait 在 fifo 写入上触发 🤷u200d♂️也尝试过read -t timeout来减少CPU使用率,但没有。)

© www.soinside.com 2019 - 2024. All rights reserved.