我尝试了两种方法将程序调用的输出定向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
并得到了相同的结果。当启动时将程序作为后台进程运行时,如何才能立即一致地更新日志文件?
注意:我不知道这是否相关,但该程序被设计为连续运行并且永不退出。