回答:
え?からman mktemp:
DESCRIPTION
Create a temporary file or directory, safely, and
print its name. TEMPLATE must contain at least 3
consecutive `X's in last component. If TEMPLATE is
not specified, use tmp.XXXXXXXXXX, and --tmpdir is
implied. Files are created u+rw, and directories
u+rwx, minus umask restrictions.
mktempランダムな文字列を追加して、一意のファイル名を作成するだけです。誰も自動的に削除しません。
少し議論があるように思われるので、もう少し詳しく見てみましょう。mktempのマニュアルページには、
TEMPLATEが指定されていない
--tmpdir場合は想定--tmpdirされ、指定されていない場合/tmpは想定されます。
これは、単に実行mktempするとtmp.RANDOM_STRING / tmpディレクトリに呼び出されるファイルが作成されることを意味します。そのmktempため、パラメータなしで実行すると、ファイルが作成さ/tmpれ、システムに依存する方法で他のすべてと一緒にクリアされます。このようなファイルの場合、$TMPTIME以下のChrisの回答で説明されているように、変数は重要です。多くのディストリビューションでは、がに設定されている/tmpため、デフォルトではすべてのブートがクリア$TMPTIMEされ0ます。ほとんどの(すべてではないにしても)配布では、これはファイルで設定されます/etc/default/rcS:
$ grep TMPTIME /etc/default/rcS
TMPTIME=0
あなたがあれば今、やるテンプレートを指定し、例えばmktemp fooXXX、次にというファイルがfooXXX現在のディレクトリに作成されたXXX3つのランダムな文字列に置き換えられます。このファイルは、特に指定しない限り削除されることはありません。「公式」一時ディレクトリ内のファイルのみ/tmpがシステムによって自動的に削除されます。一時ファイルを指定するマジックビットは設定でき/tmpません。外部ファイルとそのファイルは自動的に削除されません。
あなたの主な質問に答えるために、消える可能性のあるファイルに依存することはもちろん奇妙です。だから人々はtmpファイルに依存せず、一時的にデータを保持するために作成されます。永続的なランダムな名前のファイルを作成する方法はたくさんあります。例えば:
echo "foo" > $RANDOM.txt
echo "foo" > `mktemp fooXXX.txt`
echo "foo" > $$.txt
tmpディレクトリがクリアされるかではなく、作成されたファイルmktempが削除されるときを尋ねました。ご覧のとおり、この2つは必ずしも関連しているわけではありません:)。
一時ファイルは、システムの起動中またはTMPTIMEごとに削除される可能性があることに注意してください。にあるものをご覧ください/etc/cron.daily/tmpwatch。
/var/tmp/一方、通常は免疫がありtmpwatchます。
一時ファイルは(通常)短期間作成されます。それらは一時的な名前を持っているので、タイミング攻撃を実行するのは簡単ではなく、通常はプログラムで不要になったときに削除されます。通常、スクリプトはこのファイルを非常に短い期間保持し、通常はいくつかのテキストまたは他のファイルを処理し、不要になるとすぐに削除します。スクリプトがクラッシュする場合は、/ tmpフォルダーのハウスキーピングプロシージャにもフォールバックすることになります(配置することにした場合)。
一時ファイルを作成する必要はありません /tmp
mktempはどのディレクトリでも実行でき、単に任意のファイル名を生成するだけなので、これがどのように関係するのかわかりませんtmpwatch。
mktempは、にファイルを作成します/tmp/。
一時ファイルは、単独で消えることはありません。それらは一時ファイルと呼ばれます。スクリプトやセッションで、またはどこで作成しても、作業が完了したら削除することが期待されているからです。または、それがあなたのものであるならば、彼らを置いておいてください。mktempは、既存のファイルを上書きしないように、一意の名前のファイルを作成するためだけに存在します。
TMPTIME?
/tmpまたは他のtmpディレクトリのみ。ユーザーが作成したファイルをランダムに削除するだけではありません。
mktempは、にファイルを作成します/tmp/。