/ tmpをきれいにする方法は?


74
rizhas@rizhas-laptop:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda7        67G   58G  5,2G  92% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            1,5G   12K  1,5G   1% /dev
tmpfs           303M  1,2M  302M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            1,5G  348K  1,5G   1% /run/shm
none            100M   80K  100M   1% /run/user
overflow        1,0M  1,0M     0 100% /tmp
overflow        1,0M  1,0M     0 100% /tmp

クリーンアップする方法は/tmp


1
おそらくUnixとLinuxで答えました。この質問が重複するのかどうかはわかりません。
drc

いいえ、@ drcですが、良い発見です。そこからのリンクを使用して回答を更新しました。
リンツウィンド


回答:


117

/ tmpは再起動時にクリーンアップされることになっていますが、再起動しないと(サーバーでは正常です)、クリーンアップは行われません。

find /tmp -ctime +10 -exec rm -rf {} +

10日以上経過したすべてのファイルとフォルダーを削除します。毎日のcronに追加することをお勧めします。


更新

以下のコメントで、@ sfusseneggerは、ニーズや操作しているシステムにより適している可能性がある、このコマンドのわずかに異なる形式を推奨しています。

sudo find /tmp -type f -atime +10 -delete

ここでは、コマンドはsudoすべてが削除されていることを確認するために使用しており(またはルートとして実行できます)、10日以上アクセスされていないファイルを操作し、フォルダーではなくファイルのみを削除します。また、コマンド-deleteを実行する必要を避けるために使用しますrm


2
作成時間(-ctime)の代わりに、代わりにアクセス時間(-atime)を使用できます-もちろん、ファイルシステムがこの情報を保持している場合のみ(/ etc / fstabでnoatimeを確認してください)
-sfussenegger

7
わかりました、私と一緒に耐えてください、しかしもう一つあります:あなただけのファイルを検索したい(-type f)。そうしないと、ディレクトリツリーの親がしばらくアクセスされていないことがわかり、まだ使用されている可能性のあるすべてのコンテンツを削除できます。私が推奨する最後のコマンドはsudo find /tmp -type f -atime +10 -delete
-sfussenegger

2
@sfussenegger、おそらくあなたはあなたのコメントを答えに宣伝できますか?コメントで「隠されている」よりはましだと思います。
ジョナサン

34

tmpディレクトリ(/ tmp / / usr / tmpなど)内のすべてのものを削除できると想定できます。削除を開始する前に、使用しているすべてのプログラムとサービスを停止します。これは、プログラムが/ tmp /を使用してそのセッションの情報を一時的に保存できるためです。そうするsudo service mysql stopsudo service apache2 stop、あなたは、MySQLおよび/またはApacheを実行している場合。/ tmp /ディレクトリ内のファイルの名前は、ほとんどの場合、どのプログラムが属しているかを知る手掛かりになります。

コマンドラインから...

cd /tmp/
pwd
sudo rm -r *

/ tmp /ディレクトリを空にして、すべてのファイルとサブディレクトリを削除します。正しく入力するように注意してください。pwdそこのコマンドは必要ありませんが、表示されるはずです/tmp

インタラクティブに必要な場合(したがって、削除を確認する必要があります):

cd /tmp/
sudo rm -ri *

また、ここに示すように、再起動すると/ tmpもクリアされることに注意してください:/ tmpディレクトリはどのようにクリーンアップされますか?したがって、再起動後に/ tmp /がファイルでいっぱいになった場合、それらのファイルの出所を調査する必要があります。

また、/ tmpの1 Mbは多くのスペースではないことを述べたいと思います。MySQLを使用していますか?これを修正する方法については、https: //unix.stackexchange.com/a/76058/10017を参照してください(@drcに感謝)


2
「無害」は、最後の再起動前の日付のファイルに当てはまります。そうしないと、現在のプログラムで使用されている可能性があり、そのプログラムで問題が発生する可能性があります...たとえば、/ tmpにファイルを作成し、次の処理を実行するためにそれらを再読み込みするスクリプトがあります。それらの間に削除/切り捨てを行うと、プログラムのアクションが中断されます(また、それらのファイルの用途によっては危険な結果につながる可能性もあります)
オリヴィエデュラック

...したがって、who –b(最後のブートの日付)を使用し、ブート時に日付が付けられたファイル/ boottimeを作成(touch ....... /boottime)することfind /tmp -type f \( ! -newer /boottime \) -delete \;で、最後のブートより古いファイルのみを安全に削除できます
Olivier Dulac

これらのコメントを使用して回答を拡大できますか?注意:ここの/ tmpはおそらくmysqlからのものです。
リンツウィンド

4
mktemp私のスクリプトで定期的に使用している人として、「害のない」声明に強く反対します。
hytromo

2
/tmp最後の再起動より古いものが含まれている場合、起動スクリプトはジョブを実行していません。
サイモンリヒター14年

10

このtmpreaperプログラムを使用して、/ tmpを定期的にクリーンアップできます。このプログラムは、特定の期間(通常は2週間)にアクセスされなかったものをすべて削除します。これが適切に機能するためには、それが存在するファイルシステムでatimesオプションを有効にする必要があります。あなたがやっていると思われるtmpfsを使用する場合は、問題ないはずです。

もちろん、再起動すると/ tmpもクリアされますが、それは退屈です。


これがUbuntuとDebianの標準オプションではないのは驚きです。/ tmpがいっぱいになる比較的特権のないユーザープロセスに遭遇することは、私にとってかなり一般的です。
セージ

1
はい。ただし、システム管理者が設定する必要があるポリシーです。データが保持されることを期待する長期実行サービスがある場合、「クリーニングなし」以外のデフォルトは危険です。
サイモンリヒター

7

ディレクトリ/tmpは一時的な意味です。

このディレクトリには一時データが保存されます。そこから何も削除する必要はありません。それに含まれるデータは、再起動するたびに自動的に削除されます。

それでも存在するデータを削除したい場合は

sudo rm -r /tmp/*

これらは一時ファイルであるため、そこから削除しても問題は発生しません。


9
彼らは、彼らは、再起動後に必要としていないという意味では一時的なものであり、それは彼らが今必要に応じて、またはそれらが5minsで必要とされないことをしていないという意味ではありません
ダニエルSerodio

5
これが「問題を引き起こさない」というのは事実ではありません。私はこれを一度知ってから、基本的に私のマシンにホースをかけました。
カイルストランド


4

などのコマンドを実行する前に注意してくださいrm -r ./*。一度実行すると、データを回復することは非常に困難または不可能になります。

すべて削除されます。削除するディレクトリが正しいことを確認してください。

物事を処理するより安全な方法があります。

# sudo rm -r /tmp/*

そうすれば、シェル内から誤ってこのコマンドを実行してもhistory、間違ったファイルが削除されることはありません(ファイルを保持していない限り/tmp)。



1

Linuxファイルシステム上の「/ tmp」マウントがオーバーフロー(多くの場合1MBのサイズ)としてマウントされている場合、「/ tmp」を独自のパーティションとして指定しておらず、ルートファイルシステムがいっぱいで「/ tmp」がフォールバックとして再マウントされました。スペースをクリアした後にこれを修正するには、フォールバックをアンマウントするだけで、元のポイントに再マウントする必要があります。

sudo umount overflow

デバイスが使用中の場合

sudo umount -l overflow
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.