Linux 如何在brackground内登录到文件;手表;指挥部?

Linux 如何在brackground内登录到文件;手表;指挥部?,linux,shell,terminal,Linux,Shell,Terminal,我试图设置一个在后台运行并打印到日志文件的监视任务,但是当我在后台使用该命令时,文件不会被写入。这是我正在使用的命令: watch -n1 'echo `date +"%d-%m-%Y %H:%M:%S.%3N"` `/opt/vc/bin/vcgencmd measure_temp` >> temp.log' & 然后,终端打印: pi@raspberrypi:~ $ watch -n1 'echo `date +"%d-%m-%Y %H:%M:%S.%3N"` `/op

我试图设置一个在后台运行并打印到日志文件的监视任务,但是当我在后台使用该命令时,文件不会被写入。这是我正在使用的命令:

watch -n1 'echo `date +"%d-%m-%Y %H:%M:%S.%3N"` `/opt/vc/bin/vcgencmd measure_temp` >> temp.log' &
然后,终端打印:

pi@raspberrypi:~ $ watch -n1 'echo `date +"%d-%m-%Y %H:%M:%S.%3N"` `/opt/vc/bin/vcgencmd measure_temp` >> temp.log' &
[1] 29504
我试图终止这个过程:

kill 29504
所以我想看看日志:

cat temp.log

但是文件是空的☹️. 发生了什么事?

你为什么要用
观察
来做这个?它的目的是互动的。在
睡眠
循环时使用

while true; do
  echo '`date +"%d-%m-%Y %H:%M:%S.%3N"` `/opt/vc/bin/vcgencmd measure_temp`';
  sleep 1;
done >> temp.log' &
并不能完全模拟你从手表上得到的东西。如果你真的想这样做,你可以多多少少这样做:

while true; do
  echo '`date +"%d-%m-%Y %H:%M:%S.%3N"` `/opt/vc/bin/vcgencmd measure_temp`';
  sleep 1;
done | head > temp.log' &

您可能正处于缓冲状态。尝试将
…temp.log'&
临时更改为
。。。温度记录;是的“一些垃圾”| head-1000>>temp.log'&
这个想法是在每次读取后添加1000行垃圾,以强制将缓冲区写入磁盘。也可能是
opt/vc/bin/vcgencmd measure_temp
挂起。读取时我意识到“watch”在后台不起作用,因此我的解决方案与第一个示例类似。