私はDebianでThunderbird 68を使用しています。
送信するすべてのメールに対して、Thunderbird は /tmp に一時ファイルを作成します。
/tmp/nsmail.tmp
/tmp/nsmail-1.tmp
/tmp/nsmail-2.tmp
/tmp/nscopy.tmp
/tmp/nscopy-1.tmp
これらのファイルは電子メールの送信後も削除されないだけでなく、さらに悪いことに、Thunderbird を閉じた後もそこに残ります。
私はバグレポートを見つけましたウブントゥそしてバグジラしかし、解決策はありません。
電子メールの送信後すぐに一時ファイルが削除されないのは、非常に悪い習慣だと思います。また、アプリケーションを終了しても一時ファイルがクリーンアップされないのは、まったくひどいことです。
回避策として、これらの一時ファイルが作成される場所を変更できますか? たとえば、 を使用する方~/.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.x で導入され、まだ修正されていません。これが修正されるのを待つ間、回避策があります。TB tmp/ns*
v68 が正しく動作するにはファイルが必要であることに注意してください。
回避策 I:
コメントで示唆されているように、カスタムの一時ファイルを使用すれば、その特定の一時フォルダーにさまざまな制限を適用できます。また、環境変数の変更を広範囲に適用する必要がないことにも注意してください。
.desktop
Thunderbirdを実行するために使用されるファイル(通常は の下/usr/share/applications
)を編集し、Exec=
以下のコマンドの行を変更します。または指定されたコマンドで Thunderbird を起動します。
export TMPDIR=/home/my/new/tmpdir; export TMP=$TMPDIR; thunderbird; rm -rf /home/my/new/tmpdir/ns*
これにより、変数がカスタムの場所に設定されます$TMPDIR
。$TMP
その後、Thunderbird が実行され、最後に閉じられると、rm -rf /home/my/new/tmpdir/ns*
残っている tmp が削除されます。
bash
またはファイルからこのコマンドを実行した場合、 env. 変数の変更は Thunderbird にのみ影響することに注意してください.desktop
。それ以外の場合、このコマンドをターミナルから直接実行した場合、 への変更は$TMP
このコマンドの後に起動されたコマンドに影響します。
回避策 II:
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 秒間スリープします。