Linuxファイル削除後にスペースが解放されない問題の詳しい説明

Linuxファイル削除後にスペースが解放されない問題の詳しい説明

序文

システム領域の使用量が大きすぎて消去する必要がある場合、または特定のファイルを消去する必要がある場合、削除コマンドを実行してもディスク領域が解放されないことがあります。初めてこの状況に遭遇すると、多くの人は混乱し、Windows システムのごみ箱のように、削除はごみ箱への論理的な削除にすぎないのではないかと疑問に思うでしょう。実はそうではありません。Linux のごみ箱機能についてもっと知りたい場合は、私に連絡したり、情報を調べたりして学ぶことができます。これはより実用的な方法でもあります。ここでは、主にファイルの削除後にスペースが解放されない問題を練習します。

1. 実験準備

このシナリオをシミュレートする方法は多数ありますが、主にファイルが占有されているシナリオを実現する方法です。最も簡単な方法は、ファイルをコピーすることです。もう 1 つの一般的な方法は、プログラミングやシェルのスキルに長けた学生が、ファイルにコンテンツを継続的に書き込むプログラムまたはスクリプトを作成することです。今回は主にファイルのコピーで素早く再現しました。

1.1 少し大きめのファイルを作成する

/* 主にこのファイル操作用 */
[root@c7_2 ローカル]# ll -h 
合計 3.0G
-rw-r--r--。1 ルート ルート 2.5G 5月4日 17:43 all_backup.tar.gz

/* 現時点でルートディレクトリの使用量は 6.5G です */
[root@c7_2 ~]# df -lh 
ファイルシステムサイズ 使用済み 使用可能使用率 マウント先
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /実行
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 46G 6.5G 39G 15% /
/dev/sda1 1014M 150M 865M 15% /ブート
tmpfs 378M 0 378M 0% /run/user/0

1.2 scpコマンドを使用してファイルを占有する

/* 他のホストへのリモートコピーを開始します*/
[root@c7_2 ローカル]# scp all_backup.tar.gz [email protected]:/home/test/ 

ホスト「192.168.28.226 (192.168.28.226)」の信頼性を確立できません。
ECDSA キーのフィンガープリントは SHA256:QfJb1DogFmdZ0hkeVRvn2VHke+tkZ2+sNljhBBudooc です。
ECDSA キーのフィンガープリントは MD5:2a:8a:63:80:35:17:f7:e9:2a:ea:13:98:eb:26:30:ba です。
本当に接続を続行しますか (はい/いいえ)? はい
警告: '192.168.28.226' (ECDSA) が既知のホストのリストに永続的に追加されました。
[email protected] のパスワード: 
all_backup.tar.gz 0% 2432KB 2.4MB/秒 17:53 ETA^Z
[1]+ scp all_backup.tar.gz [email protected]:/home/test を停止しました
 /* バックグラウンドで実行*/
[root@c7_2 ローカル]# bg %1    
[1]+ scp all_backup.tar.gz [email protected]:/home/test &

1.3 ファイルの削除

/* ファイルを削除 */
[root@c7_2 ローカル]# rm -f all_backup.tar.gz 
/* ディスク容量をチェック、変化なし*/
[root@c7_2 ローカル]# df -lh 
ファイルシステムサイズ 使用済み 使用可能使用率 マウント先
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /実行
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 46G 6.5G 39G 15% /
/dev/sda1 1014M 150M 865M 15% /ブート
tmpfs 378M 0 378M 0% /run/user/0
/* ファイルは存在しません */
[root@c7_2 ローカル]# ll -h 
合計 3.0G
drwxr-xr-x. 2 ルート ルート 6 2018年4月11日 bin
drwxr-xr-x. 2 ルート ルート 6 2018年4月11日など
drwxr-xr-x. 2 ルート ルート 6 4月 11 2018 ゲーム
drwxr-xr-x. 2 ルート ルート 6 4月 11 2018 include
drwxr-xr-x. 2 ルート ルート 6 2018年4月11日 lib
drwxr-xr-x. 2 ルート ルート 6 4月 15 05:56 lib64
drwxr-xr-x. 2 ルート ルート 6 2018年4月11日 libexec
drwxr-xr-x. 2 ルート ルート 6 2018年4月11日 sbin
drwxr-xr-x. 5 ルート ルート 49 11月 17 16:46 シェア
drwxr-xr-x. 2 ルート ルート 6 2018年4月11日 src

2. 治療方法

lsof (開いているファイルのリスト) コマンドを使用すると、開いているファイルとそれを使用しているプロセスを表示できます。

lsof コマンドは、最小限インストールされたシステムでは使用できません。まず yum を使用してインストールできます。

 yum インストール -y lsof

2.1 lsof ファイルの表示

開いているすべてのファイルを表示し、削除されたファイルを除外します

[root@c7_2 local]# lsof |grep 削除済み
ファイアウォールd 818 ルート 6u REG 253,0 4096 36061750 /tmp/ffi0SEit6 (削除済み)
gmain 818 998 root 6u REG 253,0 4096 36061750 /tmp/ffi0SEit6 (削除済み)
調整済み 1180 ルート 8u REG 253,0 4096 33554962 /tmp/ffio5Nu8r (削除済み)
gmain 1180 1602 root 8u REG 253,0 4096 33554962 /tmp/ffio5Nu8r (削除済み)
調整済み 1180 1603 ルート 8u REG 253,0 4096 33554962 /tmp/ffio5Nu8r (削除済み)
調整済み 1180 1605 ルート 8u REG 253,0 4096 33554962 /tmp/ffio5Nu8r (削除済み)
調整済み 1180 1606 ルート 8u REG 253,0 4096 33554962 /tmp/ffio5Nu8r (削除済み)
scp 1798 root 3r REG 253,0 2665433605 104181296 /usr/local/all_backup.tar.gz (削除済み)

先ほど削除してそのプロセスで開いたファイルを見つけました

2.2 プロセスを見る

lsof を使用すると、all_backup.tar.gz ファイルがプロセス 1798 によって占有されていることがわかります。特定のプロセスが何であるかを確認できます。

[root@c7_2 ローカル]# ps -ef|grep 1798
ルート 1798 1729 0 17:47 pts/0 00:00:00 scp all_backup.tar.gz [email protected]:/home/test
ルート 1799 1798 2 17:47 pts/0 00:00:03 /usr/bin/ssh -x -oForwardAgent=no -oPermitLocalCommand=no -oClearAllForwardings=yes -l test -- 192.168.28..226 scp -t /home/test
ルート 1868 1806 0 17:49 pts/1 00:00:00 grep --color=auto 1798

これは前に実行したコピーコマンドです

2.3 スペースを解放する

このようなクエリステータスの場合は、対応するプログラムを終了する必要があります

/* 対応するプロセスを強制終了します */
[root@c7_2 ローカル]# キル -9 1799 1798
/* スペースが解放されました */
[root@c7_2 ローカル]# df -lh 
ファイルシステムサイズ 使用済み 使用可能使用率 マウント先
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /実行
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 46G 4.0G 42G 9% /
/dev/sda1 1014M 150M 865M 15% /ブート
tmpfs 378M 0 378M 0% /run/user/0

注:継続的に書き込まれているログをクリアする場合は、echo " ">filename コマンドを使用して、プロセスを強制的に終了せずにオンラインでファイルをクリアできます。この方法が機能しない場合は、プロセスを終了してみてください。

3. 結論

この記事は主に以下のシナリオに適用されます。

  • ファイルスペースを削除しても解放されない
  • ディスクがいっぱいですが、ファイルが見つかりません

もう一度お伝えしますが、echo " ">filename コマンドを使用してオンラインでファイルを消去できる場合は、プロセスを強制的に終了する必要はありません。この方法が機能しない場合は、プロセスを終了してみてください。

Linux のファイル削除後にスペースが解放されない問題についての記事はこれで終わりです。Linux のファイル削除後にスペースが解放されない問題に関する関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux ファイル管理コマンド例の分析 [権限、作成、削除、コピー、移動、検索など]
  • Linuxでファイルを削除してもスペースが解放されない問題の対処方法
  • Linux のリンク解除機能とファイルの削除方法
  • Linux は MySQL データベースのスケジュールされたバックアップを実装し、30 日以上前のバックアップ ファイルを削除します。
  • Linux は定期的に MySQL データベースをバックアップし、以前のバックアップ ファイルを削除します (推奨)
  • Linux サーバーでフォルダー、ファイル、解凍コマンドを削除する方法
  • Linux で大きなファイルの内容を消去または削除する 5 つの方法
  • Linux でファイルを削除するさまざまな方法の効率の比較

<<:  HTMLフォーム送信方法のケーススタディ

>>:  MySQL スライディング集計/年初来集計の原理と使用例の分析

推薦する

MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決

MySQLは独立した書き込み分離を設定します。コードに次のものを書くと問題が発生する可能性があります...

MySQL テーブルの読み取り、書き込み、インデックス作成、その他の操作の SQL ステートメントの効率最適化の問題を分析します。

前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...

HTMLは角丸四角形を簡単に実装します

質問: div+css と配置を使用して角丸四角形を実現するにはどうすればよいですか?ソリューション...

Dockerコンテナでの静的ウェブサイトレイアウトの実装

サーバーの配置数日間無料で使用できるクラウドサーバー(Alibaba Cloud、Huawei Cl...

SqlクエリMySqlデータベーステーブル名と説明テーブルフィールド(列)情報

以下では、SQL クエリ ステートメントを使用して、Mysql データベース内のテーブルのテーブル名...

Vue computedのキャッシュ実装原理の詳細な説明

目次計算結果を初期化する依存関係の収集アップデートを配布する総括するこの記事では、計算された初期化と...

MySQLトランザクションを実行するための構文とプロセスの詳細な説明

概要: MySQL は、トランザクションをサポートするためにさまざまなストレージ エンジンを提供しま...

WeChatミニプログラムはどのようにしてユーザー情報とユーザーの電話番号を同時に取得するのか

今日ログインページを書いていたとき、個人情報と携帯電話番号を認証する必要がありましたが、ページにボタ...

よく使うLinuxコマンドのまとめ

私は2年間運用保守に携わり、多くのコマンドを使用しました。特定のLinuxコマンドを習得すると、どれ...

Alibaba Cloud Server への Web プロジェクトのデプロイについて (5 つの手順)

1.まずAlibaba Cloudのウェブサイトにログインしてアカウントを登録し、サーバータイプを...

ドロップダウンメニューとスライドメニューのデザイン例

ドロップダウン メニューやスライド メニューを使用している Web サイトをたくさん見つけたので、私...

MySQL の日付関数と日付変換およびフォーマット関数

MySQL は、膨大なユーザーベースを持つ無料のリレーショナル データベースです。この記事では、My...

MySQLの関連ロックについての簡単な理解

この記事は主にInnoDBのロックに関する知識を素早く理解してもらうことを目的としています。 Roc...

CSS+JS で水滴の波紋アニメーション ボタン効果を実装するサンプル コード

コードは次のようになります。 <!DOCTYPE html> <html lang...

CSS3 で翻訳効果 (transfrom: translate) を実装する例

移動を実現するためにtranslateパラメータを使用しますtranslateX: X 軸に沿って移...