89

アプリケーションによって継続的に書き込まれている/開かれているファイルが 3GB のスペースに達したときに、そのファイルを切り捨てる/空にする Unix スクリプトを作成しようとしています。私は以下のコマンドがそれを行うことを知っています:

cp /dev/null [filename]

しかし、私はこれを実稼働環境で cron ジョブとして自動的に実行するつもりです。ここに投稿して、これと似たようなことをしているときに問題に直面したかどうかを確認してください。

4

4 に答える 4

119

別の答えを追加するだけで、

: > filename

:はbashのno-op(POSIX準拠)であるため、これは基本的に、書き込み用にファイルを開いて(もちろん、ファイルを切り捨てます)、すぐに閉じます。

編集:shellterがコメントしたように、リダイレクトを実行するためのコマンドは実際には必要ありません。

$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$

単純なリダイレクトだけでファイルがクリアされます。

于 2012-11-27T02:12:19.473 に答える
67

debianで次のコマンドを使用しました

truncate -s 0 filename
于 2012-11-27T02:16:47.070 に答える
11

それは私には理にかなっているように思えます。もちろん、Unix では、約 50 の異なる方法でこれを行うことができます。例えば、

echo -n "" >filename
cat /dev/null >filename
于 2012-11-27T00:37:48.557 に答える
3

trunc filename

UNIXのAIXフレーバーで動作します

于 2013-09-19T13:04:39.610 に答える