Advertisement
Guest User

Untitled

a guest
Apr 20th, 2014
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.07 KB | None | 0 0
  1. Screen tips
  2.  
  3. diesel
  4.  
  5. http://www.in4.org.ua/
  6.  
  7. 16 Январь 2008 г
  8.  
  9. Многим часто приходится иметь дело с работой на удаленных серверах по ssh. При этом, могут возникать самые разные проблемы с соединением, и есть вероятность того что результат долгой и напряженной работы будет потерян из-за банального дисконнекта. Хорошо иметь возможность подключаться и отключаться от удаленных хостов, сохраняя терминальные сессии. В этом, а так же во многом другом, может помочь почти "классическая" утилита screen. Скорее всего, screen уже установлен на вашей linux-машине (если нет - самое время установить) и на серверах, с которыми вы собираетесь работать.
  10.  
  11. Итак, начинаем работу. Запустить новый screen можно, как ни странно, просто командой screen без параметров:
  12.  
  13. diesel@debian:~$ screen
  14. При этом, в зависимости от настроек screen в вашей системе, либо просто появится приглашение шелла, либо "экран приветствия", нажав SPACE или ENTER в котором, вы так же попадете в shell. Вроде бы ничего необычного, кроме того, что этот shell будет уже запущен "внутри" screen'а.
  15.  
  16. Для того, чтобы выйти из screen'а (выйти, а не отсоединиться) достаточно выйти из всех открытых в нем оболочек, либо же, нажать комбинацию клавиш Ctl-a \, и ответить "y" на вопрос "действительно ли вы хотите выйти".
  17.  
  18. Отсоединиться от текущего скрина, не закрывая и не завершая сессии, можно комбинацией Ctrl-a d.
  19.  
  20. Если на машине уже есть запущенная screen-сессия, и вы хотите подсоединиться к ней, то
  21.  
  22. если сессия одна, достаточно просто команды:
  23. diesel@debian:~$ screen –x
  24. если сессий несколько, то: посмотреть список запущенных screen'ов можно командой screen -ls:
  25.  
  26. diesel@debian:~$ screen -ls
  27. There are screens on:
  28. 2762.pts-0.debian (Detached)
  29. 2743.pts-0.debian (Detached)
  30. 2 Sockets in /var/run/screen/S-diesel.
  31.  
  32. diesel@debian:~$
  33.  
  34.  
  35. Выбираем нужный нам screen, и присоединяемся к нему:
  36.  
  37. screen -x 2762.pts-0.debian
  38. Названия сессий по-умолчанию малоинформативны - просто номера процессов, если есть желание запустить и использовать несколько screen-сессий для разных задач, можно придумать более вменяемые названия. Придумываем название, затем запускаем новый screen вот таким образом:
  39.  
  40. diesel@debian:~$ screen -S "job1"
  41. где job1 - это название нашей "именнованной" сессии. Теперь в -ls мы увидим гораздо более понятное:
  42.  
  43.  
  44. diesel@debian:~$ screen -ls
  45. There are screens on:
  46. 2762.pts-0.debian (Detached)
  47. 2795.job1 (Detached)
  48. 2743.pts-0.debian (Detached)
  49. 3 Sockets in /var/run/screen/S-diesel.
  50.  
  51. и сможем подсоединиться к сессии job1, просто указав ее имя:
  52.  
  53. diesel@debian:~$ screen -x job1
  54. Как вы уже поняли, сессии сохраняются даже в то время, когда вы отключны от сервера, и все что в них запущено, продолжает выполняться. Впрочем, на этом возможности screen'а не исчерпываются. Иногда, при работе по ssh, очень хочется, чтобы было открыто сразу несколько терминалов, при этом коннектиться несколько раз облом - особенно если коннектиться нужно через несколько серверов. В этом тоже может помочь screen. Просто нажмите Ctrl - a c, и откроется еще один шелл. Перемещаться между открытыми шеллами можно либо через Ctrl - a <Цифра>, где <Цифра> - номер открытого шелла, начиная с нуля, либо Ctrl - a n/Ctrl - a p - вперед назад. Получить список открытых "окон" – консолей (и переключиться на нужную), можно комбинацией клавиш Ctrl - a "; чтобы задать нормальное имя (а не просто скучный "bash") для какого-нить окна, перейдите в него и нажмите Ctrl - a A (регистр имеет значение), затем в появившемся приглашении введите имя. Если открыто несколько окон, полезной может быть возможность следить за активностью в каком-то из них. Например, если вы запустили "долгоиграющую" команду и интересно узнать, когда она завершится. Переходим в окно с этой командой, жмем Ctrl - a m, видим надпись типа такой: "Window 0 (bash) is now being monitored for all activity". Когда что-то в окне изменится, screen подаст звуковой сигнал, а в списке окон после номера появится символ "@".
  55.  
  56. Конфигурируется screen с помощью файла ~/.screenrc, в вашем домашнем каталоге. Например, можно написать туда вот такую абракадабру:
  57.  
  58. caption always "%{= 45}%{+b w}Screen: %n | %h %=%t %c"
  59. hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
  60.  
  61. Для того, чтобы получить все время видимый список открытых окон, и другую полезную информацию внизу экрана.
  62.  
  63. Вот примерно так маленький и незаметный screen может существенно облегчить жизнь.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement