Как найти, какая экранная сессия является продолжающей работать той

Вы захотите использовать:

$ cat /etc/*-release

Вы получите ответ, подобный этому:

$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"
0
07.04.2013, 22:59
2 ответа

Когда-то давно я использовал этот простой сценарий оболочки в качестве задания крона, как Вы говорите, в конце дня.

#!/bin/sh

screen -ls \
  | awk '/\(Attached\)/{print $1}' \
  | while read line ; do
      screen -D $line ; 
    done

Экран -D (отсоединение питания), также отправляет сигнал ЗАВИСАНИЯ в родительский процесс экрана (обычно закрывающий содержание терминала). Можно использовать -d (отсоединение), если Вы предпочитаете.

Как @doon замеченный, можно использовать echo $STY знать, в котором экран - Вы.

5
28.01.2020, 02:14

Немного более надежная версия, чем andcoz':

#! /bin/sh -
tab=$(printf '\t')
screen -ls |
  while IFS=$tab read -r session time state; do
    [ "$state" = "(Attached)" ] && screen -D "$session"
  done

Это все еще не работает при использовании символов табуляции или символов новой строки на имена сессии.

2
28.01.2020, 02:14

Теги

Похожие вопросы