não pode obter o comando screen para executar código contendo DISPLAY =: 0

2

Estou tentando fazer o ssh em uma máquina remota e executar um script de shell, que abre uma GUI. Eu quero que a GUI abra na máquina remota e permaneça aberta (por isso estou usando DISPLAY=:0 nohup ). Eu tentei:

ssh -t <user-name>@<remote-host> "DISPLAY=:0 nohup ~/<script-to-be-run>.sh"

Isso funcionou muito bem, mas não consigo enviar outro comando sem fechar a janela porque a GUI chamada no script de shell liga a linha de comando. Eu tentei usar "DISPLAY=:0 nohup ~/<script-to-be-run>.sh &" e "DISPLAY=:0 nohup ~/<script-to-be-run>.sh && exit" , mas estes produzem o mesmo resultado: a GUI é aberta e a linha de comando fica suspensa.

Eu li sobre o uso de screen para desanexar o comando da sessão do shell, mas isso não parece funcionar. Na máquina remota (NÃO correndo pelo ssh, apenas sentado na frente dele), eu tentei:

screen -m -S 'test' 'DISPLAY=:0 nohup ~/<script-to-be-run>.sh'

mas recebo um erro:

Cannot exec 'DISPLAY=:0 nohup ~/<script-to-be-run>.sh':No such file or directory .

O comando DISPLAY=:0 nohup ~/<script-to-be-run>.sh funciona bem quando é executado na máquina remota (enquanto está sentado na frente dela). Alguém sabe como obter esse comando para trabalhar com screen para que eu possa executar o único comando GUI em seu próprio contêiner de terminal?

    
por Matt 27.04.2016 / 23:32

1 resposta

2

Normalmente, screen aceita um comando e argumentos, então isso pode funcionar:

screen -m -S 'test' nohup ~/<script-to-be-run>.sh

Como não está esperando uma atribuição de variável, e a variável poderia ser redefinida, você provavelmente teria que adicionar env para definir a variável:

screen -m -S 'test' env DISPLAY=:0 nohup ~/<script-to-be-run>.sh'
    
por 27.04.2016 / 23:38