screen: автоматическое создание или повторное подключение сеансов в разных конфигурациях

Что является чистым способом достижения, следуя функциональным возможностям:

function screen_create_or_reuse(){ if [ running_screen_session "$1" ]; then reattach_screen_session screen_name_"$1" else create_screen_session "$1" screen_config_"$1" screen_name_"$1" fi } 

В настоящее время мне приходится беспокоиться, если сеанс уже запущен ( screen -ls или screen -wipe ). В зависимости от этого, если он не запущен: создайте сеанс с настраиваемой конфигурацией и именем вручную ( screen -c config -S name ) и повторите попытку вручную. Мне screen_create_or_reuse name одна команда screen_create_or_reuse name которая обрабатывает все эти детали.

Я подумал о создании сценария bash, который определяет наличие сеанса и т. Д., Но я вижу, что на экране уже много вариантов, может быть, я бы переусердствовал.

Какой чистый способ достичь выше, с экраном?

  • Переименование рабочих областей в интерактивном режиме с помощью DynamicWorkspaces не работает
  • восстановить хромированные / firefox окна в исходное рабочее пространство / рабочий стол
  • Как отключить флип Mouse на Linux Mint Cinnamon 2.8
  • Как отключить переключатель рабочего пространства мыши в Cinnamon?
  • Открытие приложений на другом рабочем столе из командной строки
  • Окна Compiz + MATE переходят в предыдущее рабочее пространство
  • Время переключения рабочего пространства Linux Mint
  • Как назначить ключевой ярлык для перемещения рабочих пространств GNOME 3 вверх / вниз?
  • 2 Solutions collect form web for “screen: автоматическое создание или повторное подключение сеансов в разных конфигурациях”

    Следующий параметр man screen :

      -d -R Reattach a session and if necessary detach or even create it first. 

    Используйте его с -S для установки имени сеанса.

    По большей части -S foo -d -RR будет делать то, что вы хотите: он присоединяется к сеансу, имя которого вы указываете, и создает его, если оно уже не существует.

    Мне нравится идти немного дальше и искать файлы конфигурации, зависящие от имени. Это позволяет мне определять разные переменные среды, приложения запуска и т. Д. Для разных имен сеансов.

    Это мой файл etc/screen/0.screenrc , который предоставляется другими конфигурационными файлами, специфичными для сеанса:

     source ~/.screenrc unsetenv DISPLAY msgminwait 0 msgwait 0 screen -t post_initialization 39 sh -c 'sleep 1; screen -X msgwait 5; screen -X msgminwait 1' 

    Это пример файла конфигурации сеанса etc/term/emacs.screenrc , который запускает одно окно с Emacs (больше не полезно с Emacs 23, которое может подключаться к нескольким терминалам).

     sessionname emacs source 0.screenrc screen -t emacs emacs -nw 

    И это адаптированная версия сценария, который я использую для вызова этих сеансов. Назовите его, например, scr emacs чтобы выбрать сеанс, показанный выше. Если в файле ~/etc/screen нет файла конфигурации, соответствующего имени сеанса, я запускаю оболочку.

     #!/bin/sh session_name=$1; shift if [ -r "$HOME/etc/screen/$session_name.screenrc" ]; then exec screen -S "$session_name" -d -RR -c "$HOME/etc/screen/$session_name.screenrc" "$@" else if [ $# -eq 0 ]; then set "$SHELL"; fi exec screen -S "$session_name" -d -RR -c "$HOME/etc/screen/0.screenrc" "$@" fi 
    Linux и Unix - лучшая ОС в мире.