Como encontrar em qual sessão da tela está trabalhando

0

Eu uso o programa de tela extensivamente. Isso me ajudou tremendamente, reduzindo o tempo gasto na configuração da sessão todos os dias. No entanto, agora que tenho oito ecrãs - esqueço, por vezes, em que ecrã estou. Existe uma forma de encontrar o nome da sessão de ecrã em que estou a trabalhar? Screen -ls irá listar toda a sessão de ecrã.

Existe uma maneira de desanexar de todas as sessões de tela atualmente ativas? no final do dia.

    
por doon 07.04.2013 / 21:21

2 respostas

5

Era uma vez, eu estava usando este script de shell simples como um cron job, como você diz, no final do dia .

#!/bin/sh

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

A tela -D (power detach) também envia um sinal HANGUP para o processo pai da tela (normalmente fechando o terminal contendo ). Você pode usar -d (desanexar) se preferir.

Como @doon notou, você pode usar echo $STY para saber em qual tela você está.

    
por 07.04.2013 / 22:57
2

Uma versão um pouco mais confiável que a andcoz ':

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

Ainda não funciona se você usar os caracteres tab ou newline nos seus nomes de sessão.

    
por 07.04.2013 / 23:19

Tags