você poderia tentar este aqui?
screen -d -r $(ps -o ppid -p $$ --no-headers) -X sessionname newsessionname
[Esse pode ser considerado o passo 2 da minha pergunta anterior É possível alterar o nome da sessão da tela GNU após a criação? ]
Na verdade, eu gostaria de escrever um script que possa exibir o nome da sessão da tela atual e alterar o nome da sessão atual.
Por exemplo:
sren armcross
Ele mudará o nome da sessão para armcross
(compilador cruzado gcc do ARM) e mostrará algo como:
screen session name changed from '25278.pts-15.linux-ic37' to 'armcross'
Então, a questão chave agora é como obter o nome da sessão atual. Não apenas para exibir o antigo nome da sessão, mas de acordo com É possível alterar o nome da sessão da tela GNU após a criação? , tenho que saber (passar para -d -r) antes que eu possa mudar para outra coisa.
Podemos usar $STY
para o nome da sessão atual? Não. $STY
não será alterado depois de você ter alterado o nome da sessão para um definido pelo usuário. No entanto, para o comando
screen -d -r <oldsessname> -X sessionname armcross
< oldsessname > deve ser o nome definido pelo usuário (se alguma vez definido) em vez de $STY
, caso contrário, o erro de tela aparece "Nenhuma sessão de tela encontrada".
Talvez, haja uma maneira detalhada, use screen -list
para listar todas as sessões (nome definido pelo usuário listado) e, em seguida, combine a parte pid de $ STY com as sessões listadas e encontraremos o nome definido pelo usuário da sessão atual . Não deveria ser tão detalhado para uma pergunta tão direta. Você não acha?
As opções -d -D e -r -R parecem expor muitos detalhes de implementação ao usuário da tela. Parece que, para renomear uma sessão, você precisa desanexá-la, fazer a renomeação e, em seguida, reconectá-la. Certo?
Meu env: opensuse 11.3, tela GNU 4.00.03 (FAU) 23-out-06
Obrigado.
você poderia tentar este aqui?
screen -d -r $(ps -o ppid -p $$ --no-headers) -X sessionname newsessionname
Parece que quando você define a tela sessionname
manualmente, altera o nome do arquivo relevante em /var/run/screen/S-$USER/
, mas não atualiza o valor de $STY
, o que seria ideal.
Ainda podemos usar o valor original de $STY
para obter o nome da sessão atual, já que $STY
contém o PID
relacionado a esse nome de sessão.
PID=$(echo $STY | awk -F"." '{ print $1}')
Você pode então usar o PID
para obter o nome da sessão em / var / run / screen / S- $ USER
SESSIONNAME=$( ls /var/run/screen/S-$USER/$PID* | awk -F"." '{print $2}' )
Agora você tem o nome da sessão em SESSIONNAME
, você pode fazer o que quiser com ele.
Tags gnu-screen