アンドロイド

Linuxで(空の)ファイルを切り捨てる方法

Live Encoding and Transcoding Techniques

Live Encoding and Transcoding Techniques

目次:

Anonim

状況によっては、既存のファイルを長さゼロに切り捨てる(空にする)こともできます。 簡単に言えば、ファイルを切り捨てるとは、ファイルを削除せずにファイルの内容を削除することを意味します。

ファイルの切り捨ては、ファイルの削除、再作成、および正しいアクセス許可と所有権の設定よりもはるかに速く簡単です。 また、ファイルがプロセスによって開かれている場合、ファイルを削除すると、それを使用するプログラムが誤動作する可能性があります。

このチュートリアルでは、シェルリダイレクトと truncate コマンドを使用して、Linuxシステムでファイルをゼロサイズに切り捨てる方法について説明します。

シェルリダイレクト

ファイルを切り捨てる最も簡単で最も使用される方法は、 > シェルリダイレクト演算子を使用することです。

リダイレクトを使用してファイルを切り捨てる一般的な形式は次のとおりです。

: > filename

コマンドを分解しましょう:

  • : コロンは true を意味し、出力を生成しません。リダイレクト演算子 > 先行コマンドの出力を指定されたファイルにリダイレクトします。 filename 、切り捨てるファイル。

ファイルが存在する場合、ゼロに切り捨てられます。 それ以外の場合、ファイルが作成されます。

: 代わりに、出力を生成しない別のコマンドを使用することもできます。

次に、 cat コマンドを使用して /dev/null デバイスの内容を出力する例を示します。これは、ファイルの終わり文字のみを返します。

cat /dev/null > filename

使用できる別のコマンドは echo です。 -n オプションは、改行を追加しないように echo 指示します。

echo -n > filename

BashやZshなどの最新のシェルでは、リダイレクト記号の前のコマンドを省略して使用できます。

> filename

ファイルを切り捨てられるようにするには、ファイルの書き込み権限が必要です。 通常、これには sudo を使用しますが、昇格されたルート権限はリダイレクトには適用されません。 以下に例を示します。

sudo: > /var/log/syslog

bash: /var/log/syslog: Permission denied

sudo リダイレクトを許可するソリューションがいくつかあります。 最初のオプションでは、sudoを使用して新しいシェルを実行し、 -c フラグを使用してそのシェル内でコマンドを実行できます。

sudo sh -c '> filename'

別のオプションは、出力を tee コマンドにパイプし、 sudo tee 特権を昇格させ、空の出力を特定のファイルに書き込むことです:

: | sudo tee filename

truncate コマンド

truncate は、ファイルのサイズを指定されたサイズに縮小または拡張できるコマンドラインユーティリティです。

truncate コマンドでファイルをゼロサイズに切り捨てる一般的な構文は次のとおりです。

truncate -s 0 filename

-s 0 オプションは、ファイルサイズをゼロに設定します。

たとえば、Nginxアクセスログを空にするには、次を使用します。

sudo truncate -s 0 /var/log/nginx/access.log

すべてのログファイルを空にする

時間の経過とともに、ディスクドライブは大量のディスクファイルを大量に占有し、大量のディスク領域を占有する場合があります。

次のコマンドは、 /var/log ディレクトリの下にある「.log」で終わるファイルを空にします。

sudo truncate -s 0 /var/log/**/*.log

より良いオプションは、 logrotate ツールでログファイルを回転、圧縮、削除することです。

結論

Linuxでファイルを切り捨てるには、リダイレクト演算子 > 続けてファイル名を使用します。

端末を切り捨てる