Thunderbird: файлы nsemail и nscopy остались в /tmp

Thunderbird: файлы nsemail и nscopy остались в /tmp

Я использую Thunderbird 68 на Debian.

Для всех отправляемых мною писем 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 и пока не исправлена. Ожидается ее исправление. Вот обходной путь. Обратите внимание, что tmp/ns*для корректной работы TB 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.

Обратите внимание, что изменения переменной env. повлияют только на Thunderbird, если это запущено из файла bashили .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 секунд перед следующей проверкой.

Связанный контент