AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 408113
Accepted
Arcticooling
Arcticooling
Asked: 2017-12-01 20:29:47 +0800 CST2017-12-01 20:29:47 +0800 CST 2017-12-01 20:29:47 +0800 CST

Ecoar algo de uma sessão do tmux para a sessão base

  • 772

Tenho um script com este código:

#!/bin/bash
tmux new-session -d bash
    sleep 1d
    echo 1 day passed
    tmux kill-session

AFAIU, o eco aparecerá após 24 horas no stdout da sessão tmux, mas não na minha sessão Bash básica (a sessão que tenho após inicializar meu sistema operacional).

Como posso ter certeza de que o eco da sessão tmux (que é obviamente uma camada acima da minha sessão básica do Bash) seria impresso na minha sessão básica?

O objetivo é utilizar a sleepfase de tempo em outra sessão, mas ter a saída de todos os comandos que vêm sob ela na minha sessão.

Obviamente, não posso usar o modo de suspensão na minha sessão base porque isso tornaria a sessão inutilizável ou "sonolenta".

tmux session
  • 1 1 respostas
  • 1135 Views

1 respostas

  • Voted
  1. Best Answer
    Kamil Maciorowski
    2017-12-02T01:37:29+08:002017-12-02T01:37:29+08:00

    o eco aparecerá após 24 horas no tmuxstdout da sessão

    Se você se referir à tmuxsessão iniciada a partir do script, isso não é verdade. bashprocesso que está executando o script vai esperar tmux new-session -d bashsair, depois vai executar sleep 1de assim por diante. Aviso tmux new-session -d bashsai quase imediatamente por causa de -d(o outro bashdentro da sessão recém-criada tmuxnão sai, mas é irrelevante agora).

    Altere o atraso para sleep 10e execute o script. Espere um pouco e você o verá echo-es para o seu terminal atual . Em seguida, invoque tmux lspara ver se há uma nova sessão inútil deixada para trás. Você pode anexar a ele e verificar se nada foi echoadicionado lá.


    Não posso usar sleepna minha sessão base porque isso tornaria a sessão inutilizável

    O mesmo acontece com o seu script, durante a execução em primeiro plano. Que tal um trabalho de fundo? Você não precisa tmuxde nada:

    (sleep 20s; echo surprise) &
    

    Em geral, você pode escrever em outro terminal, desde que tenha as permissões adequadas. O seguinte é o que posso fazer no meu Debian. Digamos que eu queira escrever da sessão B, para que o texto fique visível na bashsessão A. Primeiro preciso saber qual stdouté realmente o dispositivo de A:

    readlink /proc/$pid_of_bash_A/fd/1
    

    De dentro do bashA isso é mais simples graças ao $$parâmetro especial:

    readlink /proc/$$/fd/1
    

    A saída é /dev/pts/3no meu caso. Então na sessão B:

    echo Hello World! > /dev/pts/3
    
    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve