proft 22.11.2010 00:55
Есть вопрос! — сохранение текущей сессии в screen
Подскажите как в screen сохранить текущую сессию?После перезагрузки по screen -ls ничего не остается и приходится все шелы создавать заново - неудобно.
Как с этим делом обстоит у tmux?
Спасибо!

+ 0 -
Про tmux не знаю, но в screen вроде никак. Разработчики обещали-обещали это сделать, но так и не родили. Правда есть костыли, вроде такого
Жесть, автор знает толк в извращениях :).
Еще видел один костыль через screen -t "bla-bla" восстанавливать шел за шелом, но тоже как-то не айс.
Может найдется более простой способ ...
Еще видел один костыль через screen -t "bla-bla" восстанавливать шел за шелом, но тоже как-то не айс.
Может найдется более простой способ ...
А в чем проблема добавить эти самые screen -t "bla-bla" bla в конфиг?
Уже ни в чем :) до последнего думал, что в screen есть нужный мне механизм, но где-то глубоко спрятан.
как бы верно, но смущает
После перезагрузки по screen -ls ничего не остается
. хотя, если включить логику, так и должно быть - с какой радости screen -ls должен что-то показывать, если перезагрузка убила его нафиг?
а с другой стороны, Гном умеет запоминать запущенные приложения и восстанавливает их после перезагрузки, а ФФ умеет восстанавливать открытые вкладки.
а еще с другой стороны - если в сессии скрина у меня запущен скрипт конвертации какого-нить большого видео-файла, а я ребутнул машинку, то неужели скрин должен поднять эту сессию и продолжить работу скрипта с места перезагрузки? неправильно это..
а еще с другой стороны - если в сессии скрина у меня запущен скрипт конвертации какого-нить большого видео-файла, а я ребутнул машинку, то неужели скрин должен поднять эту сессию и продолжить работу скрипта с места перезагрузки? неправильно это..
ога. осталось всего ничего. зафризить процесс, задампить память :) и восстановить потом...
но помимо иронии вопрос неожиданно серьезный. как зафризить процесс для перезагрузки? (OpenVZ не предлагать. я про реальную систему)
но помимо иронии вопрос неожиданно серьезный. как зафризить процесс для перезагрузки? (OpenVZ не предлагать. я про реальную систему)
дык.. это не серьезно уже..
подобные вещи нужно решать в виде каких-нить интерпрайз-систем и не на наших "реальных" машинках.
лично мне в голову приходит только один ответ:
подобные вещи нужно решать в виде каких-нить интерпрайз-систем и не на наших "реальных" машинках.
лично мне в голову приходит только один ответ:
не еби себе мозги
это просто отключение от сессии, с возможностью последующего подключения к ней. А речь идёт о том, чтобы сессия восстанавливалась после перезагрузки системы (самого screen'а).
^a+d - деатач скрина, если ребутнутся то этого сохраненного состояния не будет
Для создания новых шеллов можно добавить в ~/.screenrc строчки:
Скрин стартует с 5ю новыми шеллами, конечно же пустыми и свежими, без старых настроек.
screen 0
screen 1
screen 2
screen 3
screen 4
Скрин стартует с 5ю новыми шеллами, конечно же пустыми и свежими, без старых настроек.
А вот так запустить например миднайт в шелле
screen -t mc /bin/bash -c mc
screen -t mc /bin/bash -c mc
Вообще, у меня это решено так, есть конфиг screen,
$HOME/etc/scr.rc, в котором запускаются различные
нужные мне программы:
# -*- mode: shell-script -*-
#caption always
#caption string "%w"
#hardstatus alwayslastline "This is a test..."
hardstatus alwayslastline "%?%{yk}%-Lw%?%{wb}%n*%f %t%?(%u)%?%?%{yk}%+Lw%?"
screen -t mc /bin/bash
screen -t apt /usr/bin/sudo /home/evgeny/bin/_root
screen -t root /usr/bin/sudo /home/evgeny/bin/_root
screen -t log /bin/bash
screen -t man
screen -t calc /usr/bin/calc
#screen -t wiki /home/evgeny/.bin/_wiki
screen -t mc /bin/bash -c mc
screen -t mc /bin/bash -c mc
screen -t projects /home/evgeny/bin/_goto-projects
screen -t ncmpd /home/evgeny/bin/_ncmpc.slon
Сам screen запускается скриптом $HOME/bin/_scr, который запускает screen,
или аттачится к существующей сессии, если есть сессия.
#!/bin/sh
SCR_ON=`screen -list|grep -s "There is a screen on:" 2>&1`
if < -n "$SCR_ON" >
then
echo "There is screen"
screen -RD
else
echo "There is no screen"
screen -ac ~/etc/scr.rc -S _scr
fi
$HOME/etc/scr.rc, в котором запускаются различные
нужные мне программы:
# -*- mode: shell-script -*-
#caption always
#caption string "%w"
#hardstatus alwayslastline "This is a test..."
hardstatus alwayslastline "%?%{yk}%-Lw%?%{wb}%n*%f %t%?(%u)%?%?%{yk}%+Lw%?"
screen -t mc /bin/bash
screen -t apt /usr/bin/sudo /home/evgeny/bin/_root
screen -t root /usr/bin/sudo /home/evgeny/bin/_root
screen -t log /bin/bash
screen -t man
screen -t calc /usr/bin/calc
#screen -t wiki /home/evgeny/.bin/_wiki
screen -t mc /bin/bash -c mc
screen -t mc /bin/bash -c mc
screen -t projects /home/evgeny/bin/_goto-projects
screen -t ncmpd /home/evgeny/bin/_ncmpc.slon
Сам screen запускается скриптом $HOME/bin/_scr, который запускает screen,
или аттачится к существующей сессии, если есть сессия.
#!/bin/sh
SCR_ON=`screen -list|grep -s "There is a screen on:" 2>&1`
if < -n "$SCR_ON" >
then
echo "There is screen"
screen -RD
else
echo "There is no screen"
screen -ac ~/etc/scr.rc -S _scr
fi
hardstatus alwayslastline "%?%{yk}%-Lw%?%{wb}%n*%f %t%?(%u)%?%?%{yk}%+Lw%?"
а можно попросить дешифровать?
Списал, долго разбираться, но в общем это красивая статус лайн. Серенькая с желтенькими названиями окон, и белым на синем фоне - текущее окно. Материалы для дешифровки можно найти в man screen