小编Jas*_*son的帖子

为什么将标准输出定向到文件不一致且延迟?

我尝试了两种方法将程序调用的输出定向printf到文件。在这两种情况下,有时文件会立即更新,有时需要几分钟,有时根本不更新文件。

我的程序从/etc/network/if-up.d/upstart执行的 bash 脚本运行。我已经为我的 bash 脚本尝试过这个:

    #!/bin/bash
    sleep 2

    if ! pgrep "demo" > /dev/null
    then
        sudo /home/pi/code/demo_device/demo >> /home/pi/code/demo_device/auto_log.txt 2>&1 &
    fi
Run Code Online (Sandbox Code Playgroud)

和这个:

    #!/bin/bash
    exec 1> >(logger -s -t $(basename $0)) 2>&1
    sleep 2

    if ! pgrep "demo" > /dev/null
    then
        sudo /home/pi/code/demo_device/demo &
    fi
Run Code Online (Sandbox Code Playgroud)

第一种情况下的 auto_log.txt 文件和第二种情况下的/var/log/user.log 文件都存在我上面描述的问题。我还让 bash 脚本运行演示可执行文件,start-stop-daemon并得到了相同的结果。当启动时将程序作为后台进程运行时,如何才能立即一致地更新日志文件?

注意:我不知道这是否相关,但该程序被设计为连续运行并且永不退出。

bash c logs io-redirection logger

0
推荐指数
1
解决办法
1489
查看次数

标签 统计

bash ×1

c ×1

io-redirection ×1

logger ×1

logs ×1