Thunderbird:nsemailファイルとnscopyファイルは/ tmpに残ります。

Thunderbird:nsemailファイルとnscopyファイルは/ tmpに残ります。

私はDebianでThunderbird 68を使用しています。

私が送信するすべての電子メールに対して、Thunderbirdは/ tmpに一時ファイルを生成します。

/tmp/nsmail.tmp
/tmp/nsmail-1.tmp
/tmp/nsmail-2.tmp
/tmp/nscopy.tmp
/tmp/nscopy-1.tmp

これらのファイルは電子メールを送信しても削除されませんが、Thunderbirdを閉じた後もそのまま残ります。

バグレポートが見つかりましたUbuntuそしてブギラしかし、解決策はありません。

メールを送信した直後に一時ファイルを削除しないことは非常に悪い習慣であることがわかりました。そして本当にとんでもないことは、アプリが終了した後も一時ファイルをクリーンアップしないことです。

回避策として、これらの一時ファイルが作成される場所を変更できますか?たとえば、~/.cache/thunderbird/使用する方が適切です。

答え1

このバグはv68.xで導入され、修正されていません。調査の結果具体的な状況は以下の通りである。

エラー情報:

以前のバージョンのThunderbirdは電子メールを送信するときに使用します~/tmp/ns*が、TBがまだ開いている間は使用後すぐに一時ファイルを削除します。 v68.xaエンコーディングエラーが発生した場合、Thunderbirdは問題を解決するために変数を設定するのではなく、その/tmp/ns...場所にある一時ファイルを削除しようとします。 (アップストリームアップデートを待っています)~/tmp/ns...$TMPDIR/tmp

解決策:

次のコマンドでThunderbirdを実行すると、問題が解決します(他の回答に似ています)。

export TMPDIR=/tmp; thunderbird;

答え2

このバグはv68で導入されましたtmp/ns*

解決策1:

コメントで提案されているように、カスタム一時ファイルを使用して、その特定の一時フォルダにさまざまな制限を適用することができ、環境変数の変更を広範囲に適用する必要はありません。

次の行を変更して、Thunderbird(通常は下).desktopを実行するために使用されるファイルを編集します。/usr/share/applicationsExec=または与えられたコマンドを使用してThunderbirdを起動します。

export TMPDIR=/home/my/new/tmpdir; export TMP=$TMPDIR; thunderbird; rm -rf /home/my/new/tmpdir/ns*

これにより、カスタムの場所に設定$TMPDIRと変数が設定され、Thunderbirdが実行され、最後に終了したときに残りのtmpが削除されます。$TMPrm -rf /home/my/new/tmpdir/ns*

環境を参照してください。変数の変更は、またはファイルで実行している場合bashにのみThunderbirdに影響します.desktop。そうではなく、端末から直接このコマンドを実行すると、変更は$TMPこのコマンドの後に開始されたコマンドに影響します。

解決策2:

Thunderbirdを使用すると、スクリプトを使用して手動でこれを実行でき、.desktop次の内容でファイルを編集します。

Exec=env TMPDIR=/tmp /usr/bin/thunderbird & /path/to/watch-tb-script.sh

どこにcat watch-tb-script.shありますか:

#!/bin/sh

[[ $(ps all -e | grep thunderbird | grep -v color | grep -v grep) ]]
while [[ "$?" == 0 ]] 
do
  for i in /tmp/ns*; do 
    if [ -f "$i" ]; then 
      rm -rf $i;
      sleep 10s; 
    fi;
  done;
  sleep 60s;
  [[ $(ps all -e | grep thunderbird | grep -v color | grep -v grep) ]]
done;

Thunderbirdが開いている間、スクリプトは実行され続け、/tmp/ns*10秒ごとにファイルを確認し、各ファイルを削除します。その後、スクリプトは次の確認の前に60秒間スリープモードに入ります。

関連情報