この質問は、私の開発者のラップトップ上のUbuntu 14.10に関するものです。
一時的なものを入れるためにアプリケーションが使用する/tmp
にフォルダがあります。このアプリケーションは通常、homedirに一時フォルダーを作成し、後で削除します。何らかの理由で、homedirが暗号化されていると機能しません。その代わり、homedir内で/tmp/foo
へのシンボリックリンクを作成しました。私のアプリケーションはそこに書き込み、一時的なサブフォルダーにすることができます。
マシンを再起動するたびに/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
自体のすべてを削除する条件を追加することです。それ、どうやったら出来るの?
/etc/init/mounted-tmp.conf
はmountall
パッケージの一部であるため、そのパッケージの更新および提案された変更は元に戻されます。
$ 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
を使用するようにシンボリックリンクを変更する必要があります。
厳密にはあなたの質問への答えではありませんが、/var/tmp
は再起動後にクリーンアップされないため、より適切な場所であると感じるかもしれません。それは一時ファイルのために設計されており、短時間後に自動的に破棄されるべきではありません。
しかし、私がよくやるのは、/ optの下にフォルダを作成して、家に持ちたくないランダムなものを保存することです。これは、メインOSの制御外にあるものを置くのに適した場所です。
そのようです:
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ファイルでない場合は別のディレクトリを使用する必要があります。
将来価値のあるファイルを作成して/ tmpディレクトリに書き込むことはお勧めできません(他の人が提案しているように、/ var/tmpがより良い場所です)。とはいえ、おしゃべりをしてみたいと思うかもしれません。これは、アプリケーションが終了した後、シャットダウンする前に実行する必要があります。この操作では、今後そのディレクトリにanythingが書き込まれないことに注意してください。
touch /tmp/foo/ddmmyy/.001_immute_me chattr + i /tmp/foo/ddmmyy/.001_immute_me