GNU/Linux >> Linux の 問題 >  >> Linux

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

状況によっては、既存のファイルをゼロの長さに切り捨てる(空にする)ことが必要になる場合があります。簡単に言うと、ファイルを切り捨てるということは、ファイルを削除せずにファイルの内容を削除することを意味します。

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

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

シェルリダイレクト#

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

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

: > filename

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

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

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

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

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

cat /dev/null > filename

使用できるもう1つのコマンドは、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'

もう1つのオプションは、出力をteeにパイプすることです。 コマンド、teeを昇格させます sudoの権限 、そして空の出力を指定されたファイルに書き込みます:

: | 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でファイルを切り捨てるには、リダイレクト演算子>を使用します その後にファイル名が続きます。

ご質問やご意見がございましたら、下にコメントを残してください。


Linux
  1. Linuxで.gzファイルと.tar.gzファイルを抽出する方法

  2. Linuxでログファイルを空にする方法

  3. Linuxでファイルの名前を変更するにはどうすればよいですか?

  1. LinuxでファイルをUTF-8エンコーディングに変換する方法

  2. LinuxでNetcatを使用してファイルを転送する方法

  3. ディレクトリのすべてのファイルを空にする linux コマンド

  1. Linuxでファイルを移動する方法

  2. LinuxファイルでACLを表示または変更する方法

  3. すでに存在し、何らかの形で保護されているLinux上のファイルを空にする(切り捨てる)方法は?