Я использую 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 секунд перед следующей проверкой.