「クライアント」マシンでは、安全な移動方法/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