2017-04-11 8 views
0

バックグラウンドで実行中の監視タスクを設定してログファイルに出力しようとしましたが、バックグラウンドでコマンドを使用するとファイルは書き込まれません。これは、私が使用しているコマンドです:brackground "watch"コマンド内のファイルにどのようにログインするのですか?

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

、端末版画:

[email protected]:~ $ 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 

ファイルi空の☹️。何が起こるのですか?

+0

あなたはバッファリングに苦しんでいる可能性があります。一時的に '... temp.log '&'を '... temp.logに変更してみてください。はい "いくらかのごみ" | head -1000 >> temp.log '& '読み込みのたびに1000行のゴミを追加して、バッファをディスクに書き込むようにします。 –

+0

'opt/vc/bin/vcgencmd measure_temp'がハングしている可能性もあります。 – spinkus

答えて

1

なぜこれにwatchを使用しますか?インタラクティブであることを意図しています。

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

は正確にあなたが時計から取得したいものをシミュレートしません:whilesleepループを使用してください。あなたが本当に欲しかったら、これで多かれ少なかれこれを行うことができます:

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

読書私は、「時計」はバックグラウンドでは機能しないことに気づいたので、私の解決策は最初の例のようです。 – UselesssCat

関連する問題