/ tmp内のフォルダーがクリーンアップされるのを防ぐにはどうすればよいですか?


12

この質問は、私の開発者のラップトップ上のUbuntu 14.10に関するものです。

私は/tmpそこに一時的なものを置くためにアプリケーションによって使用されるフォルダを持っています。このアプリケーションは通常、homedirに一時フォルダーを作成し、その後削除します。何らかの理由で、homedirが暗号化されている場合は機能しません。その代わり、/tmp/foohomedir内へのシンボリックリンクを作成しました。私のアプリケーションはそこに書き込み、一時的なサブフォルダーにすることができます。

これで/tmp/foo、マシンをリブートするたびに削除されます。今までは、再起動後に手動でフォルダを再作成しました。今、私が学んだどのようにクリーンアップ/ tmpディレクトリのですか?それをしている仕事があること。

私は見ました/etc/init/mounted-tmp.confが、私のbashfuと特にfindfuは、私が望むことをするのに十分ではありません。そのファイルからの抜粋を次に示します。

   EXCEPT='! -name .
            ! ( -path ./lost+found -uid 0 )
            ! ( -path ./quota.user -uid 0 )
            ! ( -path ./aquota.user -uid 0 )
            ! ( -path ./quota.group -uid 0 )
            ! ( -path ./aquota.group -uid 0 )
            ! ( -path ./.journal -uid 0 )
            ! ( -path ./.clean -uid 0 )
            ! ( -path "./...security*" -uid 0 )'

   # Remove all old files, then all empty directories
   find . -depth -xdev $TEXPR $EXCEPT ! -type d -delete
   find . -depth -xdev $DEXPR $EXCEPT -type d -empty -delete

私がしたいのは/tmp/foo/tmp/fooそれ自体ではなく、内部のすべてを削除する条件を追加することです。それ、どうやったら出来るの?


ある/tmp/fooディレクトリやファイルは?
テルドン

ディレクトリ。内部にファイルがあります。
シンバク

mkdir /tmp/foo直前に追加してみませんend scriptか?
ハーゲンフォンアイゼン

ちょうどFYI(既に知っているかもしれません):14.10は2015年7月にEOLに達するため、できるだけ早くVividにアップグレードする必要があります。
レオラム

回答:


20

/etc/init/mounted-tmp.confmountallパッケージの一部であるため、そのパッケージの更新と提案された変更は元に戻されます。

$ sudo dpkg -S /etc/init/mounted-tmp.conf 
mountall: /etc/init/mounted-tmp.conf

代わりに、Filesystem Hierachy standard(FHS)に従って;

/ tmpについて:

プログラムは、/ tmp内のファイルまたはディレクトリがプログラムの呼び出し間で保持されると想定してはなりません。

/ var / tmpについて:

/ var / tmpディレクトリは、システムのリブート間で保存される一時ファイルまたはディレクトリを必要とするプログラムで使用可能になります。したがって、/ var / tmpに保存されたデータは、/ tmpのデータよりも永続的です。

したがって、シンボリックリンクをの/var/tmp代わりに使用するように変更する必要があります/tmp


3
ハンマーを持っているときの典型的な例は、すべてが釘のように見えます。
WernerCD

@WernerCDでは、その意味を詳しく説明していただけますか?それ/var/tmpは良い考えではないと言っていますか?
シンバク

6
あなたが持っているすべてをハンマーであるときは... - If a person is familiar with ... a certain, single instrument, they may have a confirmation bias to believe that it is the answer to/involved in everything.私はOPはために使用されることを意図していない何かのために/ tmpを使用していることを言っている-ない-かなりTMP-が、-を維持する彼の問題にハンマーとしては/ tmpを使用して-tmpのもの。/ var / tmpはリブート間で保持する必要があるため、正しい答えです。
WernerCD

8

厳密にはあなたの質問への答え/var/tmpではありませんが、再起動してもクリーンアップされないため、より適切な場所であることがわかります。これは一時ファイル用に設計されており、短時間で自動的に破棄されることはありません。

しかし、私がよくやるのは、/ optの下にフォルダを作成して、家に持ちたくないランダムなものを保存することです。これは、メインOSの制御外にあるものを置くのに適した場所です。


これは正しい考えです。/ tmpで必要な処理が行われない場合は、情報を別の場所に保存します。空き容量がある場合は別のドライブに保存することもできます。必要な結果を得る唯一の方法でない限り、Linux(および他のプログラマー)が特定の方法になると期待していることを台無しにしないでください。
ジョー

6

そのようです:

EXCEPT='! -name .
            ...
            ! ( -path "./foo" )'

   # Remove all old files, then all empty directories
   ...
   find /tmp/foo/* -depth -xdev $TEXPR -delete

例:

$ cd /tmp/foo/
$ mkdir 1 2 3
$ touch 3 4 5
$ find /tmp/foo/* -depth -xdev $TEXPR -delete
$ ls /tmp/foo/
$

私はユーザーaapに同意します:tmpファイルである場合はそこにディレクトリを再作成することによって使用されるソフトウェアでこれを処理するか、パージされないtmpファイルでない場合は別のディレクトリを使用する必要があります。


これは実際には機能しません。find手動で実行した場合、コマンドは期待どおりに機能し/etc/init/mounted-tmp.confますが、編集後もディレクトリは削除されます。ここで何か他のことが起こっているようです。
テルドン

wth。えー これは、1行目に障害があることを意味するはずです。多分それは相対的である必要がありますか(?)
Rinzwind

@terdonはい、/ tmp /に相対的である必要があるようです
Rinzwind

そうは思いませんが、さまざまな組み合わせを試しましたが、それらを含め-path ./foo-name '*foo*'、どれも動作しませんでした(Ubuntu Server 14.04で)。これは正しいファイルではなく、間違った場所を探していると思います。あなたが提案していることうまくいくはずです、それはちょうどそうではないようです。
テルドン

0

将来価値のあるファイルを作成し、/ tmpディレクトリに書き込むのは悪い考えです(他の人が提案したように、/ var / tmpはより良い場所です)。そうは言っても、chattrでショットをしたいかもしれません。これは、アプリケーションが終了した後、シャットダウンする前に実行する必要があります。この操作はさせませんことを覚えておいてください何も今後そのディレクトリへの書き込みを。

touch /tmp/foo/ddmmyy/.001_immute_me chattr + i /tmp/foo/ddmmyy/.001_immute_me


一時ディレクトリが必要な場合、どのように役立ちますか?
シンバク

-1

これを実行します:

echo "if [ ! -e /etc/foo/ ]; then mkdir /etc/foo/; fi; rm -rf /etc/foo/*" > /bin/foodel; sudo chmod 755 /bin/foodel 

次に、これを/ etc / inittabに追加します。ここを参照してください:inittabファイルはどこですか?

foo:2345:boot:/bin/foodel

ブート時に/ etc / fooが存在しない場合は作成され、空になります。

これは、bashログインでも同じことを行います。

echo "/bin/foodel" >> ~/.bashrc

Ubuntuバージョン14はを使用しません/etc/inittab。これは、マニュアルページに明確かつ明確に記載されています。
JdeBP

* facepalm *すみません@JdeBP、これはLinuxの4つの異なるバージョンをジャグリングした後、私に起こることです。彼はコードをaskubuntu.com/questions/34308/where-is-inittab-fileの
ダニエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.