各プロセスの一時ディレクトリ

各プロセスの一時ディレクトリ

"standard"プロセス自体と一緒に消える単一のプロセスに割り当てられた一時ディレクトリはありますか?/proc/$pid/tmpまたはのように見えるもの/proc/self/tmp。システム全体の一時ディレクトリ、ユーザー固有の一時ディレクトリ、永続ディレクトリ、再起動時に消去される一時ディレクトリなど、tmpfs多くの一時ディレクトリがあります。

各プロセスの一時ディレクトリを持つことは常識のように聞こえますが、見つかりません。

答え1

いいえ、各プロセスの一時ファイルの標準的な場所やあいまいな汎用的な場所はありません。その理由は、プロセス固有の一時ファイルが非常にまれであるためです。一時ファイルの目的は、ほぼ常にプロセス間でデータを交換することです。プロセスが他のプロセスと通信する必要がない場合は、データをメモリに保存できます。

さらに意味があるのは、他のプロセスでもファイルにアクセスできますが、プロセスが終了すると削除されるプロセス固有の一時ディレクトリです。しかし、これは実装の複雑さの点で多少コストがかかる作業です。シャットダウンプロセスは、再帰的なファイルとディレクトリの削除を実行する必要があります。これは、マウントポイントが消えるなど、非常に複雑な操作を実行できます。数行のシェルで実装できるものの場合、利点はかなり小さいです。

#!/bin/sh
tmpdir=$(mktemp -d) || exit
the_real_program; ret=$?
rm -rf -- "$tmpdir"
exit $ret

技術的に必要なことは、次の方法で行うことができます。ヒューズ:プロセスがFUSEドライバを介して一時ファイルシステムを実装するようにします。しかし、繰り返しますが、効果がほとんどないには複雑すぎます。

答え2

簡単に言うと:いいえ。 /procエントリはメモリベースなので、/ tmp oir / usr / tmp(または同様のエントリ)をmktmpまたは同様のコマンドと組み合わせて使用​​すると、うまく機能します。

前述したように、カーネルマッピングスペースは非常に高価であり、システムのメモリが非常に迅速に不足しています。

一時ファイルを使用するすべてのアプリケーションは、いくつかの管理タスクを実行して独自にクリーンアップする必要があります。

関連情報