たとえば3GBのスペースに達すると、アプリケーションによって継続的に書き込まれ/開かれているファイルを切り捨てる/空にするUnixスクリプトを作成しようとしています。私は以下のコマンドがそれを行うことを知っています:
cp /dev/null [filename]
しかし、これを本番環境でcronジョブとして自動的に実行します。ここに投稿して、これと同様のことをしているときに問題が発生したかどうかを確認してください。
たとえば3GBのスペースに達すると、アプリケーションによって継続的に書き込まれ/開かれているファイルを切り捨てる/空にするUnixスクリプトを作成しようとしています。私は以下のコマンドがそれを行うことを知っています:
cp /dev/null [filename]
しかし、これを本番環境でcronジョブとして自動的に実行します。ここに投稿して、これと同様のことをしているときに問題が発生したかどうかを確認してください。
回答:
別の答えを追加するだけで、
: > filename
:
はbashのno-op(POSIX準拠)であるため、これは基本的に、書き込み用にファイルを開き(もちろんファイルを切り捨てます)、すぐに閉じます。
編集:シェルターがコメントしたように、リダイレクトを実行するためのコマンドは実際には必要ありません:
$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$
単純なリダイレクトだけでファイルがクリアされます。
> filename
(あなたが知っていると確信しているように)。皆さんお元気で。
私はdebianで次のコマンドを使用しました
truncate -s 0 filename
sudo sh -c ': > filename'
切り捨ても行われますfilename
sudo
ますsudo cp /dev/null filename
。また、最新のLinuxのみであるのcp
に対し、移植性もtruncate
あります。
logrotate
ことがありますか、それはあなたにいくつかの価値を提供するかもしれません(しかしそれを設定するのは面倒です(推測するだけです)!)。