2014 m. rugpjūčio 21 d., ketvirtadienis

tmux ir screen

Kaip programai leisti toliau veikti atsijungus nuo ssh ar dingus internetui?

tmux

Sukūrus tmux sesiją ir atsijungus nuo ssh, programa paleista tmux sesijoje veiks ir lokaliai kompiuteryje ir nebus išjungta.

tmux diegimas
$ sudo apt-get install tmux

Paleidžiant programą, sukuriama pirma sesija, kaip 0:
$ tmux

Sesijų sąrašas:
$ tmux list-session
0: 1 windows (created Tue Aug 19 10:40:37 2014) [112x26] (attached)
radija: 1 windows (created Tue Aug 19 10:36:13 2014) [112x26] (attached)

Prisijungimas naujausios sesijos:
$ tmux attach
Prisijungimas prie sesijos:
$ tmux attach -t 0:
Klavišų siuntimas į sesiją:
$ tmux send-keys "*" -t radija
Sesijos išjungimas:
$ tmux kill-session -t radija
Visų sesijų išjungimas
$ tmux kill-server

Nuspaudus Ctrl + B galima naudoti komandas

d -  atsijungti nuo sesijos.
& - uždaro langą.
s -  rodo visas sesijas.

% - padalinimas vertikalus.
"  - padalinimas horizontalus.
o - sekantis langas.
<- / -> - ankstesnis/sekantis langas
x - uždaro langą
p/n - ankstesnis/sekantis sesijos langas
z - priartina pasiriktą langą/atstato langus (fullscreen)

: resize-pane -D 20 (Sumažina padalinta langą 20 vienetų)
: resize-pane -U 20 (Praplečia padalintą langą 20 vienetų)

c -  sukurti naują sesijos langą.
$ - sesijos lango pervadinimas.
0-9 - sesijos langų navigacija.
q - leidžia pasirinkti langą.
w -  rodo visus sesijos langus.
?  - pagalba, kitos komandos.

[ - leidžia judėti aukštyt tekste.
{ - sukeičia langus vietomis

Priedai
Sesijų atkūrimas:
https://github.com/tmux-plugins/tpm - Papipdinių programa.

Įrašome šį failą:
$ nano ~/.tmux.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

run '~/.tmux/plugins/tpm/tpm'

Pasileidus tmux sesiją paleidžiame komandą:
$ tmux source ~/.tmux.conf

Nuėjus į tmux sesija belieka nuspausti šią kombinaciją ir papildinys bus atsiųstas.
 Ctrl+B+I  (Būtinos didžiosios raidės)

Ctrl + B  + Ctrl-s - Sesijos saugojimas
Ctrl + B + Ctrl-r - Sesijos atstatymas
 
Enable mouse controls:
set -g mouse on

Nuorodos:
euro-python2017 - tmux tutorialas anglų kalba.
https://www.youtube.com/watch?v=5iXzqN8-34E
https://gist.github.com/MohamedAlaa/2961058 - sheatsheet anglų kalba
https://gist.github.com/MohamedAlaa/2961058 - tmux pamokos githube, anglų kalba.

screen

$ screen -list 
$ screen -ls #Arba 
 There are screens on:
14762.pts-26.sup-desktop (2016.07.04 09:37:34) (Attached)
13797.pts-21.sup-desktop (2016.07.04 09:32:50) (Attached)


Prisijungimas prie sesijos:
$ screen -r <id>

Prisijungti prie tos pačios sesijos gali  keli vartotojai su -x parametru:
$ screen -x 14762.pts-26.sup-desktop

Ctrl+d- detach. Atsijungia nuo sesijos.
Ctrl+c  - create. Nauja screen sesija.
Ctrl+n   next. Judėjimas per sesijas.

Paprastai screen sesijoje neleidžia judėti slankikliu ar ratuku, todėl galima naudoti šią komandą:
Ctrl+a+Esc - Kopijavimo režimas.

Kaip padalinti į kelias dalis ?
Ctrl+a S - Horizontalus padalinimas
Ctrl+a | arba C+aV - Vertikalus padalinimas.
Ctrl+a tab - Peršokimas į sekantį padalytą regioną.
Ctrl+a X - Esamo regiono pašalinimas.
Ctrl+a Q - Pašalinti visus regionus, išskyrus šį.


Priedas

PS1 informacija, leidžianti geriau atpažinti screen ir tmux langus.



Pridedam prie .bashrc failo:
#Tikrinam ar tai screen sesija
if [ -n "$STY" ]; then
  export num=`echo ${STY} | awk -F. '{print $1}'`
  export PS1="(screen $num) $PS1";
fi
#Tikrinam ar tai tmux sesija
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi

.screenrc nustatymai
Paveikslėlyje pavaizduotos dvi screen sesijos, aktyvi sesija paryškinta

Šie nustatymai leis keisti langus su F5, F6 ir judėti slenkančiu tekstu.
caption always # activates window caption
caption string '%{= wk}[ %{k}%H %{k}][%= %{= wk}%?%-Lw%?%{r}(%{r}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %{k}][%{b} %d/%m %{k}%c %{k}]' # good looking window bar
 
bindkey -k k5 prev # F5 for previous window
bindkey -k k6 next # F6 for next window