screen-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: session save to disk?


From: David Collins
Subject: Re: session save to disk?
Date: Tue, 25 Aug 2009 14:43:04 +0100

Hi Gerald,

In the interests of me learning how to do properly what I have done
poorly, would you mind sharing your scripts?

Thanks

David Collins

On 24/08/2009, Gerald Young <address@hidden> wrote:
> On Sunday 23 August 2009 14:53:49 David Collins wrote:
>> On 23/08/2009, Erik Osheim <address@hidden> wrote:
>> > On Sun, Aug 23, 2009 at 03:02:44PM +0200, lukasz wrote:
>> >> Heres the question:
>> >> Is there a way to save screen session to disk, so I could load it when
>> >> PC reboots?
>> >> Eg. I would like screen to try to open some directories previously
>> >> opened.
>> >
>> > This question gets asked periodically. Currently, I don't know of any
>> > good way; there was a tool called CryoPID that had some of these
>> > capabilities but I don't think it works anymore.
>> >
>> > -- Erik
>> >
>> I wrote a very bad script that attempts to save some sort of state -
>> actually it writes a screenrc file that can be used to start a new
>> screen session.
>>
>> [...]
>>
>> David Collins
>>
>
> I made my own set of scripts too that write screenrc files.
>
> In my case there are a set of screenrc file for loading and another set for
> saving.  The saving screenrc files write the scrollback buffer, the bash
> history and working directory.  The loading ones do everything in reverse,
> so
> that these three things are restored perfectly (as far I know).  The
> scrollback and history was somewhat tricky to restore correctly.
>
> I used the "process" command to automate things (but still leaving the user
> in
> control, things can go wrong while stuffing commands into screen/shell).
> The
> overall flow for loading/saving a session is like this:
> - Manually verify that every bash (or whatever) instance is at the shell
> prompt and ready to receive commands
> - Run the main "screenrc" (or "save_screenrc" file) that will:
>    - Create each window in turn and set title if loading
>    - Select each window in turn if saving
>    - In both cases, type in a command which will later be executed
> - Manually go thru each window, and hit enter to execute the command typed
> in
> in previous step
> - Make sure the commands executed correctly along the way
>
> In order to set up this system to save/load a new session I use a shell
> script, which uses a few m4 macros to generate the screenrc scripts.
>
> The shell script reads a CSV file with the window type (bash/vim/etc), the
> window number, the window title and the window title using backslash escapes
> (used to make directories, one for each window, where files are saved).
>
> Once this info is read, it makes a directory tree for the session (1
> directory
> per session, 1 directory per window inside the session directory),  and uses
> a series of m4 macros to generate the screenrc scripts.
>
> Depending on window type it uses a different set of macros, which allows to
> somewhat adapt to different programs running under screen.
>
> Another neat feature is the ability to comment out lines (that start with #)
> in the CSV file to skip them on the loading/saving scripts.
>
> And to top it all up, add in a local revision control system (I use git) to
> keep a history of save session states, just in case something goes wrong.
>
> It turned out to be a bit more complicated that I imagined at first.  But I
> was a bit desperate at the moment, I was about to get on a plane and cross
> the Atlantic soon and had a lot of screen sessions I didn't want to just
> close (I used stand-by a lot, just to preserve screen sessions).  The
> sessions were also consuming the little RAM this laptop had, so I had to do
> something.
>
> Gerald Young
>
>
> _______________________________________________
> screen-users mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/screen-users
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]