Script Bash: crie uma sessão de tela e execute um comando nela

0

Eu quero escrever um arquivo bash, que inicia uma sessão de tela e executa um comando dentro dele.

O problema é que primeiro cria uma sessão e quando você sai manualmente da sessão, ele executa o próximo comando. Existe uma maneira de executar o comando dentro da sessão?

Este é o meu código até agora:

#!/bin/bash
screen -S test
python3 test.py
    
por phyyyl 27.02.2018 / 18:19

1 resposta

1

Você precisa que você passe o comando para executar dentro da sessão de tela. Você pode fazer isso passando o comando diretamente ou chamando um script que executa o comando que você deseja.

screen -S test "python3 test.py"

Se você usar esse método, observe que o comando ( python ) e o argumento transmitido a ele ( test.py ) estão dentro das marcas de fala ".." - isso pode ficar complicado se você estiver transmitindo argumentos que exigem marcas de fala formatadas especificamente, e talvez seja mais fácil usar o método abaixo.

screen -S test /home/user/test.sh

em que test.sh está em / home / user /, é executável ( chmod +x ./test.py ) e contém:

#!/bin/sh
python3 test.py

A vantagem da segunda maneira é que você pode ter quantos comandos quiser no script, eles serão executados um após o outro.

Você pode ter vários comandos executados "ao mesmo tempo" usando o plano de fundo da tarefa:

#!/bin/sh
# All 3 will run at the same time
python3 test.py &
python3 test1.py &
python3 test2.py &

Alguns truques extras e inteligentes podem ser encontrados em uma pergunta semelhante sobre SF , e uma última coisa a notar é que com TODOS estes métodos, a própria sessão de tela será fechada assim que o programa / script sair. Se você não quer fazer isso, você quer olhar para executar uma sessão bash, que chama o script e, em seguida, retorna para a sessão bash depois - como este screen -S test "someCommand; bash" .

    
por 27.02.2018 / 18:38