「クライアント」マシンでは、安全な移動方法/tmp
は再起動です。ここで、クライアントと/tmp
は、特にXサーバーと画面にソケットを配置するプログラムを実行するものを意味します。
新しいものには/tmp
間違いなく適切なアクセス許可(1777)が必要です。
/tmp
あなたはかなり上の任意のファイルをコピーすることはできません。これは、ほとんどの/tmp
場合、ファイルを開くプログラムです。ファイルをコピーすると、内容はコピーされますが、プログラムはまだ古いファイルを開いたままです。デバッガー(ptrace
)でそれらにアクセスできる場合がありますが、これは再起動よりもはるかに複雑になり、多くのプログラムでは、とにかくクラッシュするだけです。
あなた/tmp
がいっぱいで、新しいものにライブに切り替えたい場合は、ファイルが開いているすべてのプログラムを再起動する必要があります。それはXとスクリーンセッションを再起動することを意味するので、再起動するよりもはるかに優れています。
新しいプログラムに切り替えることができますが、ユニオンマウントを使用して、既存の開いているファイルを所定の位置に保持する必要があります。(原則は健全ですが、試したことがないので、予期しない問題が発生する可能性があります。)Linuxでこれを行う方法を次に示します。
/tmp
手動で選択したいくつかの大きなファイルを除き、すべての既存のファイルを保持します。
/tmp.new
(モード1777)を作成します。
- 公開
/tmp
別のパスに:mount --bind / /.root.only
。次のステップが影になるので、これは必要/tmp
です。このステップを必要としない別のユニオンマウント実装が存在する場合があります。
- 組合は山作り
/.root.only/tmp
と/tmp.new
、上のマウント/tmp
。この方法で作成された新しいファイル/tmp
は書き込まれ/tmp.new
ますが、ファイルはの/.root.only/tmp
下にも表示され/tmp
ます。1つの可能性は
unionfs-fuseですunionfs-fuse /tmp.new:/.root.only/tmp /tmp
。
ユニオンマウントルートに移動したくない場合(プラットフォームで使用できない場合や、問題が多すぎるため)、少なくとも古いディレクトリを削除しないでください。それを移動して、実行中のプログラムが古いディレクトリを使用し続け、新しいプログラムが新しいディレクトリを使用するようにします。(もちろん、新しいプログラムは、どこに探すか/tmp
を設定TMPDIR
または指示しない限り、ソケットまたはパイプを介して古いプログラムと通信することはできません。)
mv /tmp /tmp.old && mkdir /tmp