LINUX.ORG.RU

как запустить терминал с параметрами/окружением уже запущенного инстанса (не-интерактивного)?

 , , , ,


0

1

xUbuntu 18.04.4 LTS (4.15.0-111-generic; XFCE 4.12)

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

Что есть сейчас (из вариантов спасения) - запущенный инстанс xfce4-terminal без GUI (но вероятно что с «еще-годной» копией .bash_history внутри своего окружения), который был получен открытием видеофайла из MidnightCommander (сам mc уже закрыт), в итоге сейчас у меня в XFCE-сессии запущен экземпляр SMPlayer в котором физически болтается порожденное им дерево процессов/потоков вида (htop):
/usr/bin/xfce4-terminal -x mc
_/usr/bin/xfce4-terminal -x mc
__/usr/bin/mpv --no-config --no-quiet --terminal --no-msg-color --input-file=/dev/stdin --no-fs --hwdec=no --sub-auto=fuzzy --no-input-default-bindings --input-vo-keyboard=no --no-input-cursor ...blablabla...

Какие есть фантазии спасение ситуации:
1. неким триком/хаком открыть терминал изнутри SMPlayer (соотв. с параметрами/окружением породившей его bash-сессии - как минимум history)
2. как-то инициировать запуск xfce4-terminal который скопирует параметры/окружение запущенного ранее (существующего инстанса) вместо создания нового (как минимум history)
3. магическим образом получить консольный доступ (шелл) внутрь существующей именно-этой сессии xfce4-terminal - без перечитывания опять-таки, параметров окружения

Вопрос прямо горящий - все работает на живом железе (и ессно что может перестать в любой момент).

/usr/bin/xfce4-terminal -x mc
_/usr/bin/xfce4-terminal -x mc
__/usr/bin/mpv --no-config --no-quiet --terminal --no-msg-color --input-file=/dev/stdin --no-fs --hwdec=no --sub-auto=fuzzy --no-input-default-bindings --input-vo-keyboard=no --no-input-cursor ...blablabla...

Нет, всё, конец. Был бы там запущен bash с открытой исправной копией .bash_history - было бы другое дело, это бы тривиально делалось через /proc/$pid/fd/. А здесь bash не запущен, и помнить старую историю команд некому.

Если ещё помните одну из важных команд из истории, можете попытаться найти её (и её соседей) hex-редактором, открыв раздел с файловой системой на чтение. Не факт, что освободившееся после затирания файла место уже не было перезаписано.

anonymous ()
Ответ на: комментарий от anonymous

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

MinasFilm ()
Ответ на: комментарий от MinasFilm

«терминал» в SMPlayer был как бы запущен без баш-истории

За ~/.bash_history и вообще интерактивную обработку команд отвечает не xfce4-terminal, а bash. Терминал только притворяется телевизором с клавиатурой, принимает от графической подсистемы ввод и рисует то, что ему пишет дочерний процесс, на экране. Дочерний процесс может быть bash, mpv, cmatrix, …, всё что угодно. Из них только один занимается обработкой команд и может вести или не вести (см. HISTFILE) их учёт.

anonymous ()
Ответ на: комментарий от xaizek

Да, можно. Я говорю что если вариков нет то срочно гасить машину ибо любые потыпки восстановить на живую могут привести к перезаписи. Тут такое себе, надо взвешивать риски

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от anonymous

я понял спасибо большое
да думаю что нет смысла мучить попу с дескрипторами и хекс-поиском - свободно 1% на харде + сам .bash_history я уже перезаписал после наверное пару десятков раз минимум
штож
день жизни с чистого листа и деланья выводов да

MinasFilm ()