Странный пустой bash _история -*файлы.tmp в моей папке $HOME

Я увидел ту же ошибку, когда пытался подключиться по ssh к Synology , так как мне нужно было использовать Borg Backup. Проблема заключалась в том, что я пытался подключиться к пользователю, который не был администратором, хотя все разрешения были правильными. Когда я попытался подключиться по ssh к пользователю, который был суперадмином, соединение не было прервано. Я не знаю, поможет ли это, но это мой опыт с этой ошибкой.

1
02.05.2021, 17:45
2 ответа

Исходный код bash(, доступный в Debian с apt-get source bash), записывает свой файл истории, используя функцию history_do_writeв файле bash-5.0/lib/readline/histfile.c. Он создает временный файл, записывает в него строки истории, а затем использует его для замены фактического файла истории

.
tempname = (overwrite && exists && S_ISREG (finfo.st_mode)) ? history_tempfile (histname) : 0;
output = tempname ? tempname : histname;

...

if (rv == 0 && histname && tempname)
  rv = histfile_restore (tempname, histname);

Существует ряд мест, где запись может завершиться ошибкой, и в этих случаях связь с временным файлом (удаляется ), а исходный файл остается в покое.

Однако в мимолетном комментарии вы упомянули, что запустили форкбомбу. Это вполне могло быть основной причиной появления этих временных файлов. Вполне возможно, что из-за чрезмерной нагрузки на память и процесс, вызванной неконтролируемой форк-бомбой, bashне смог получить достаточно временной памяти даже для завершения этого процесса восстановления и просто завис во время попытки обновления. (Обратите внимание, что это не неопровержимый факт, а всего лишь гипотеза.)

Если вы находитесь в среде, где пользователи могут запускать форкбомбы, стоит включить управление ресурсами .

2
28.07.2021, 11:35

Точно сказать нельзя, но скорее всего что-то изменило переменную окружения HISTFILEи потом вызвало bash (или, может быть, какой-то другой файл на основе readline-, но тогда вопрос, почему $HISTFILEбудет содержать.bash-history).

Это похоже на то, что вы делаете в наборе модульных тестов ().

Я копался в исходном коде bash уже пару минут, и не похоже, чтобы он хоть где-то отличался от стандартного $HOME/.bash_history, если только он не указан через HISTFILE.

0
28.07.2021, 11:35

Теги

Похожие вопросы