バックグラウンドで実行されるシェルスクリプトがありますが、これが行う唯一の作業は、STDOUTがファイルに追加されるコマンドを1つだけ実行することです。
my_blocking_command >> my_file
行数が多すぎるのを防ぎたいので、次のように実行しました。
[ "$(cat my_file)" -ge 30 ] && tail -n20 my_file | sponge my_file
ファイルを上書きすると問題が発生します。ファイル記述子は現在ファイルを指していませんmy_file
。my_blocking_command
作成されたファイル記述子は、目的のファイルを指していません。
my_file
上書きしてもコマンド出力が常にリダイレクトされるようにするにはどうすればよいですか? (ファイル記述子ではなく名前に従ってください。例tail --follow=name
:)
それとももっと良い方法がありますか?