Ponieważ używam polecenia * nix przezscreen
cały dzień i nie mogłem znaleźć nikogo, kto zacząłby to pytanie, pomyślałem, że należy je uruchomić. Znasz wiki ćwiczenia: społeczność, jedna odpowiedź na każdą funkcję, abyśmy wszyscy mogli głosować.
Ponieważ używam polecenia * nix przezscreen
cały dzień i nie mogłem znaleźć nikogo, kto zacząłby to pytanie, pomyślałem, że należy je uruchomić. Znasz wiki ćwiczenia: społeczność, jedna odpowiedź na każdą funkcję, abyśmy wszyscy mogli głosować.
Odpowiedzi:
Ja uwielbiam go używać do podłączania konsol szeregowych, czyli
screen /dev/ttyS0 19200
To polecenie po prostu otwiera połączenie z portem szeregowym 0 (ttyS0) z szybkością transmisji 19200
Najlepszą funkcją screen
jest Byobu (wcześniej profile ekranowe), który jest domyślnie dostarczany z Ubuntu od czasu Jaunty: https://launchpad.net/byobu
Jest to menedżer konfiguracji z bardzo ładnymi ustawieniami domyślnymi, mnóstwem powiadomień o stanie i przydatnymi skrótami klawiaturowymi (np. F2 dla nowego ekranu, f3-f4 dla poprzedniej / następnej itd.)
Naprawdę nigdzie się bez niego nie wybieram :)
Z odpowiedzi KTamas: więcej niż jedna osoba może korzystać z tego samego ekranu, tzn. Jeśli twój znajomy korzysta z twojego ssh
komputera, może on połączyć się z twoim ekranem. To wspaniale, gdy dwie lub trzy osoby pracują nad tymi samymi projektami.
Niezupełnie „ukryta funkcja”; ale właściwie ustawiony plik .screenrc może zmienić świat. Jednym z lepszych przykładów jest googling screenrc i „brad sims” - ma doskonały plik do majstrowania.
powiedziawszy, moim ulubionym ustawieniem będzie bindkey:
# bind F7 to detach screen session from this terminal
# bind F8 to kill current screen window.
# bind F9 to create a new screen
# bind F10 to rename current screen window
# bind F11 to move to previous window
# bind F12 to move to next window
bindkey -k k7 detach
bindkey -k k8 kill
bindkey -k k9 screen
bindkey -k k; title
bindkey -k F1 prev
bindkey -k F2 next
Nie pamiętam, od kogo to ukradłem (ktoś na dotfile.org). Lekko zmodyfikowałem to dla ssh:
#!/bin/sh
# scr - Runs a command in a fresh screen
#
# Get the current directory and the name of command
wd=`pwd`
cmd=$1
shift
# We can tell if we are running inside screen by looking
# for the STY environment variable. If it is not set we
# only need to run the command, but if it is set then
# we need to use screen.
if [ -z "$STY" ]; then
$cmd $*
else
# Screen needs to change directory so that
# relative file names are resolved correctly.
screen -X chdir $wd
# Ask screen to run the command
if [ $cmd == "ssh" ]; then
screen -X screen -t ""${1##*@}"" $cmd $*
else
screen -X screen -t "$cmd $*" $cmd $*
fi
fi
Następnie ustawiam następujące aliasy bash:
vim() {
scr vim $*
}
man() {
scr man $*
}
info() {
scr info $*
}
watch() {
scr watch $*
}
ssh() {
scr ssh $*
}
Otwiera nowy ekran dla powyższych aliasów i iff za pomocą ssh, zmienia nazwę tytułu na nazwę hosta ssh.
Pozdrawiam z0mbix
Użyteczne jest to, że ekran może emulować większą szerokość niż twój terminal. Uważam to za przydatne, jeśli używam less
do prawdziwych plików dziennika i nie chcę, aby linie się zawijały. Za pomocą:
Ctrl-A:width -w 999
Mogę ustawić screen
, aby były szersze niż mój terminal, a wiersze logowania less
się nie zawijają.
-s
powie, żeby nie zawijała linii. Możesz używać Left
i Right
do przewijania linii.
Jedna fajna funkcja: możesz użyć, backtick
aby pobrać dodatkowe informacje do wyświetlenia w podpisie. Na przykład mam skrypt, który wyświetla jednoliniowe podsumowanie liczby nowych wiadomości w różnych folderach, i pojawia się w dolnej linii, jeśli moja sesja ekranowa wraz z nazwą hosta z konfiguracją wygląda następująco:
backtick 1 15 15 /home/waltermundt/bin/newmail
caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"
Kluczem jest bit% 1`, który odnosi się do wyjścia zadania backtick 1.
(Używam hardstatus
jako ciąg tytułu Xterm i mam go ustawiony inaczej, więc użycie caption
zamiast hardstatus alwayslastline
.)
Nie jest to funkcja „ukryta”, ale możliwość udostępnienia sesji ekranu innemu aktywnemu użytkownikowi jest bardzo przydatna.
Istnieją skomplikowane sposoby konfiguracji udostępniania ekranu, w tym uprawnienia kontroli dostępu i zarządzanie nazwami użytkowników. To, co najczęściej robię ze współpracownikami, jest znacznie szybsze i brudniejsze:
chmod 777 $(tty)
sudo su <username>
screen -x <session>
Nie wymaga to wcześniejszej konfiguracji ani udostępniania hasła.
Mały ściągawka, którą sobie wydrukowałem;
(Uwaga: wszystko poprzedza Ctrl-A)
Odp .: zmień nazwę okna ": pokaż listę okien d: sesja detatch
I screen -D -R
odłączyć i ponownie dołączyć działającą sesję (w przypadku utraty dostępu do sesji).
Żadne z nich nie są naprawdę ukrytymi funkcjami, ale są to funkcje, które uważam za najbardziej przydatne.
Jest to podstawowa funkcja, ale oczywiście najlepiej jest Ctrl-A:rozmawiać bezpośrednio z ekranem. : screen -t title ssh hostname
itp.