私は、たとえば3GBのスペースに達したときにアプリケーションによって継続的に書き込まれている/開かれているファイルを切り捨て/空にするUnixスクリプトを作成しようとしています。私は以下のコマンドでそれができることを知っています:
cp /dev/null [filename]
しかし、私はこれを実稼働環境でcronジョブとして自動的に実行します。ここに投稿して、これと似たようなことをしているときに問題に直面したかどうかを確認します。
別の答えを追加するために、
: > filename
:
はbashのノーオペレーションなので、これは本質的に書き込み用にファイルを開き(もちろんファイルを切り捨てます)、その後すぐに閉じます。
編集:シェルターがコメントしたように、実際にリダイレクトを行うためのコマンドは必要ありません:
$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$
単純なリダイレクトだけでファイルがクリアされます。
私はdebianで次のコマンドを使用しました
truncate -s 0 filename
それは理にかなっているようです。もちろん、Unixではこれを約50の異なる方法で実行できます。例えば、
echo -n "" >filename
cat /dev/null >filename
trunc filename
uNIXのAIXフレーバーで動作します