Yanıtlar:
Gnu ekranına çok aşina değilseniz Ansgar'ın söylediklerini genişletmek için, tek bir ekran oturumunda birden fazla "pencereye" sahip olmak muhtemelen ihtiyacınız olanı başaracaktır.
ctrl+ a, cetkin ekran oturumunuzda yeni bir "pencere" oluşturur. Sen (Ansgar belirtildiği gibi) ile birden pencereler arasında geçiş yapabilirsiniz ctrl+ a, nsonraki pencere için ve ctrl+ a, pönceki pencereye için.
ctrl+ a, "tüm açık pencerelerinizin bir listesini verir.
Bu kolay kısayolları kullanmak, farklı terminaller arasında çok hızlı ve kolay bir şekilde geçiş yapmanızı sağlayarak, birden fazla ekran oturumu kullanmadan hedefinize ulaşmanızı sağlar.
~ / .Screenrc dosyasına aşağıdaki satırı eklerseniz, her zaman açık pencerelerinizi ve hangisinin seçildiğini görüntüler, böylece hatırlayarak hatırlatarak hangi pencerede olduğunuzu izlemenize gerek yoktur.
hardstatus alwayslastline '%{= kg}[ %{G}%H %{g}][%= %{= kB}%?%-Lw%?%{+b r}(%{G}%n*%f %t%?(%u)%?%{r})%{-b B}%?%+Lw%?%?%= %{g}%]'
Bu, kullanmak istediğim zor durum satırı, ancak tamamen özelleştirilebilir (man sayfasına bakın veya google'da "gnu ekran hardstatus" için arama yapın).
Onunla yapabileceğiniz bir sürü başka şey var (örneğin farklı açık pencereleri adlandırmak), bu yüzden bazı öğreticileri okumaya değer.
İşte hızlı bir arama ile bulduğum bir çift:
http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml
http://www.ibm.com/developerworks/aix/library/au-gnu_screen/
Ve elbette en faydalısı:
# From your terminal:
$ man screen
Umarım yardımcı olur.
Matthew
Evet, screen
büyük olasılıkla gidilecek yol. Ctrl+ a, nsizi bir sonraki pencereye, Ctrl+ a, bir pönceki pencereye götürür . Ctrl+ a, 0.. 9belirli bir ekrana geçmenizi sağlar.
Diğerlerinin söyledikleri doğrudur. Sadece bahsetmek istiyorum tmux
bir alternatif screen
. Çok benzer komutları var.
Her ikisi de screen
ve tmux
çalışan bir oturum için birden çok pencere sunar ve bu muhtemelen istediğiniz şeydir.
tmux
ek olarak birden fazla oturum arasında atlama (her biri kendi pencereleri vardır) sunuyor. Buna çok nadiren ihtiyacınız olacak.
Ekranın belgelerine ve tmux ile ilgili bir kilitlenme kursuna bazı bağlantılar .
Çok zaman geçtikten sonra tamamen eksik olan bu özellik üzerinde çalışmak için bir Script yaptım. Her şeyden önce bir fifoya ihtiyacı var:
mkdir ~/.screen
mkfifo ~/.screen/pipe
Bu adlandırılmış kanal, ayrılmış oturum ile "Ekransız ana" oturumu arasındaki iletişim için kullanışlıdır.
Sc dosyası ($ PATH içinde):
#!/bin/bash
CONFIGFILE=~/.screen/"$1""rc"
if [ ! -r $CONFIGFILE ] ; then
echo "Configurazione per $1 Assente" >&2
exit 1
fi
exec 3<> ~/.screen/pipe
if [ "$STY" != "" ] ; then
screen -d "$STY"
echo "$1" >&3
else
screen -r "$1" 2>/dev/null || screen -S "$1" -c $CONFIGFILE
while true ; do
read line <&3
screen -r "$line" 2>/dev/null || screen -S "$line" -c ~/.screen/"$line""rc"
done
fi
Bir "CONFIGFILE" örneği: ~ / .screen / Monitorrc
layout new Monitor
screen -t "bash" bash --login
split -v
focus next
split
focus bottom
screen -t "cv" sh -c "watch /usr/bin/cv -w"
split
focus bottom
screen -t "sys.log" sh -c "tail -F /var/log/sys.log"
focus up
focus up
resize 25
screen -t "top" sh -c "top"
focus left
Sonuç: ekran türünü başlatmak istediğinizde:
sc Monitor
veya icat etmek istediğiniz başka bir sessionrc, oturum çalışmasını çeşitli şeyler için kullanıyorum
Örn: ~ / .screen / Workrc
layout new Work
screen -t "bash" bash --login
Şimdi yazarken Oturum Monitörü'ndeyiz:
sc Work
Monitor, kendisini ayırır ve adlandırılmış boruya "İş" yazar. Sonuç olarak ilk sc komut dosyası ileri gider ve oturumu "Work" ekler.
Oturum İzleyicisi'nden çağrılan sc kapatılır.
Tüm Oturumları ayırdığımızda sonsuz bir döngü içerisindeyiz, bu yüzden çıkmak için Ctrl-c yapmamız gerekir.
Bunu, basit bir kabuk komut dosyası ile yapabilirsiniz.
for s in `screen -ls | grep Detached | grep <regex to your screen names>`; do screen -r $s; done
Açık olan birkaç ekranınız olduğunu varsayalım. Ayrıca, bunları iş ve veri olarak sınıflandırdığınızı varsayalım.
for i in {10..13}; do screen -S `printf data%02d $i`; done;
for i in {0..5}; do screen -S `printf work%02d $i`; done;
...
Uygulayarak screen -ls
, ekranlarınız böyle olmalıdır
There are screens on:
81592.data13 (Detached)
81539.work04 (Detached)
81527.work02 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81533.work03 (Detached)
81488.work00 (Detached)
81607.ttys014.Mo (Attached)
81545.work05 (Detached)
81580.data11 (Detached)
81521.work01 (Detached)
81515.work00 (Detached)
12 Sockets in /var/folders/qs/cvlbhpr54fnb96vtx01bs9k00000gn/T/.screen.
Şimdi müstakil ekranları kullanarak izole edelim grep
.
screen -ls | grep Detached
Böyle bir şey almalısın
81592.data13 (Detached)
81539.work04 (Detached)
81527.work02 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81533.work03 (Detached)
81488.work00 (Detached)
81545.work05 (Detached)
81580.data11 (Detached)
81521.work01 (Detached)
81515.work00 (Detached)
Şimdi tekrar istediğinizi (örn. Veri) seçelim grep
.
screen -ls | grep Detached | grep data
Bu sadece veri ekranlarını izole edecektir. Aramanızı özelleştirmek için grep anahtar kelimesini normal ifadelerle değiştirebilirsiniz.
81592.data13 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81580.data11 (Detached)
Neyse ki sonuç iyi yapılandırılmış ve sekmeyle ayrılmış. Şimdi sütunları alanlara ayıralım ve kullanarak 2. alanı seçelim cut
.
screen -ls | grep Detached | grep data | cut -d' ' -f2
Sınırlayıcı parametresinden sonra ctrl+v
a eklemek için önce tuşuna, sonra sekmesine basmanız gerekir . Sonuçlar böyle olmalıdır.tab
-d
81592.data13
81586.data12
81574.data10
81580.data11
Şimdi, ...
tırnak işaretlerini kullanarak bunu bir komuta paketleyin ve bunun gibi sonuçlar üzerinde döngü yapın. Gerçekte çalıştırmadan önce daima formüle edilmiş komutları kontrol edin. kullandımecho screen -r
for s in `screen -ls | \
grep Detached | grep data | \
cut -d' ' -f2`; do \
echo screen -r $s; \
done
Her şey yolunda giderse, onsuz deneyin echo
.
for s in `screen -ls | \
grep Detached | grep data | \
cut -d' ' -f2`; do \
screen -r $s; \
done
Voila. Çıkardığınız her ekran sizi bir sonrakine götürür.
Mutlu tarama !!
Kullanıcının ok tuşlarını kullanarak listeden eklenecek ekran oturumunu seçmesine izin vermek için bir düğüm komut dosyası yazdım. Bir npm paketi yaptım. Buradan kontrol edebilirsiniz: screen-command . Ya da sadece npm i -g screen-command
denemek için, zaten node.js'nin kurulu olduğunu varsayarsak. Paketi kurduktan sonra sc
, ekran listesini çağırmak için command komutunu kullanın.
Umarım bu tam istediğiniz ekrana geçişi kolaylaştırır.
^a
başka bir şeye dönüştürün, bu yüzden basac'ta emacs tarzı çizgi düzenlemeyi, başka bir şeyi kullanmak gülünç derecede can sıkıcı değil. Ben kullanıyorum^t
.