/tmp
ディレクトリはどのようにクリーンアップされますか?自動ですか?ある場合、どれくらいの頻度でクリーンアップされますか?
/tmp
ディレクトリはどのようにクリーンアップされますか?自動ですか?ある場合、どれくらいの頻度でクリーンアップされますか?
回答:
注意!少なくともubuntu 14.04以降、この答えは時代遅れです。現在の状況に関する他の回答を参照し、それらが正しいことを証明したら、猛烈に支持してください。また、ここに現在の正解へのリンクを配置できるようにコメントを投稿してください。
14.04についてはhttps://askubuntu.com/a/759048/1366をご覧ください
16.10については、https: //askubuntu.com/a/857154/453746を参照してください
2011年の古い回答:
のクリーニングは/tmp
、upstartスクリプトによって実行されます/etc/init/mounted-tmp.conf
。スクリプトは、/tmp
マウントされるたびにupstartによって実行されます。実際には、すべての起動時に意味します。
このスクリプトはおおよそ次のことを行います。ファイル/tmp
が数$TMPTIME
日より古い場合、ファイルは削除されます。
デフォルト値$TMPTIME
は0です。これは、すべてのファイルとディレクトリ/tmp
が削除されることを意味します。$TMPTIME
はで定義された環境変数です/etc/default/rcS
。
デフォルトでTMPTIME
は0 であるため、ディレクトリはブートごとにデフォルトでクリアされます。
ここでは、次のファイルで時間を変更できます。
/etc/default/rcS
TMPTIME
tmp dirが日単位でクリアされる頻度
tmpreaper
、チャンスを与えるべきです。
tmpwatch
、適切なツールである必要があります。
一方で/tmp
、フォルダにファイルを長期的に保存するための場所ではありません、時にはあなたは少し長いよりも、物事を維持したいあなたは次回リブート Ubuntuのシステムではデフォルトです。/tmp
テスト中に何かをダウンロードし、変更を加えて再起動し、元のデータを再び失ったことを知っています。/tmp
ファイルをもう少し長くしたい場合は、これを変更できます。
/tmp
クリーンアップ頻度の変更
/tmp
再起動時にクリアするようシステムに指示するデフォルト設定は、/etc/default/rcS
ファイルに保持されています。調べる値はTMPTIME
です。
の現在の値は、TMPTIME=0
ファイルの経過時間に関係なく、再起動時にファイルを削除します。この値を別の(正の)数値に変更すると、ファイルが存続できる日数が変更され/tmp
ます。
TMPTIME=7
この設定により、ファイル/tmp
は1週間経過するまで残り、次の再起動時に削除されます。負の数(TMPTIME=-1
)は、に何も削除しないようにシステムに指示し/tmp
ます。これはおそらくあなたが望むものではありませんが、利用可能です。
/etc/init/mounted-temp.conf
が、それはstart on mounted MOUNTPOINT=/tmp
私がそれを適用外であると思うようにする行を持っています。
/var/tmp
代わりにファイルを入れてください/tmp
。
Ubuntu 16.10でこれを確認しています。/ etc / default / rcSを編集してもまったく効果がなく、tmp内のファイルは、そのファイルに何を入れても再起動によって消去されることを証明できます。他の人が言及するように、tmpreaperは使用されなくなりました。
正しい答えは、Ubuntu 16.10に新しいセットアップがあるということです。フォルダー/etc/tmpfiles.dがあり、manページ「tmpfiles.d」に記載されています。そのフォルダーに、/ tmpを消去するかどうかを制御する構成ファイルを配置する必要があります。これは、20日経過していない限り、/ tmp内のファイルの消去からリブートを停止するために行っていることです。
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
ファイルを削除したくない場合は、「20d」を「-」に置き換えます。これは私の最善の努力であり、そのmanページは詳細がほとんど理解できません。
新しいセットアップの利点は、システムが再起動されない場合でもファイルクリーナーを実行できることです(常時オンサーバーの場合など)。それは大きなプラスだと思います。
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
Ubuntu 14.04ではtmpreaper
、これはによって行われ、cronから毎日呼び出されます(から/etc/cron.daily
)。プログラムは、経由で設定することができる/etc/default/rcS
と/etc/tmpreaper.conf
。
再起動するたびにクリーンアップされます。
tmpreaper
。
systemd
Ubuntu(15.10以降)、これを使用して、systemdにすることによって行われsystemd-tmpfiles-clean
たサービスとタイマーを:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
そして
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
そのためsystemd-tmpfiles-clean
、シャットダウン時に実行され、そうでない場合は1日に1回実行されます。別の回答に/etc/tmpfiles.d
記載されている方法を使用して、クリーンアップするファイルを拡張できます。
タイマーの動作自体を変更するにはsystemctl edit systemd-tmpfiles-clean.timer
、を使用し、さまざまなsystemd Timer
設定オプションを使用します(を参照man 5 systemd.timer
)。
/tmp
まだクリーンアップされていないことです。そして、私はそれをきれいにする必要があります。手動で開始sudo systemctl start systemd-tmpfiles-clean
してもうまくいきません。なぜアイデアがありますか?
Ubuntuを実行しているサーバーの1つには、/ tmp内のファイルを削除するスクリプトがあり、夜間に実行されます。
スクリプトは次のとおりです。
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
上記の内容をファイルに保存し、ファイルをchmod 775し、cronエントリを作成して実行します。これはWebサーバーであるため、明らかな理由で再起動する必要はありません。
ln -s /usr /tmp/kaboom
でもかln -s /* /tmp/
...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
/ etc / fstabに入れました。