Tela no script bash

5

Estou usando um script bash e preciso criar uma tela, executar um comando específico com um limite de memória e desanexar a tela.

Eu tenho tentado algo parecido:

#!/bin/bash
for i in 1 2 3 4 5 6 7
do
    test="test"$i
    screen -dmS test
    screen -r test -X ulimit -v 2199552
    screen -r test -X ./my_command $i
done

... mas não funciona. Em particular, a tela é criada, mas ./my_command não é executada. Alguma dica?

    
por sommo 09.12.2013 / 16:24

1 resposta

5

Primeiro, você deseja $test em vez de test nas linhas screen do seu script.

O comando -X está esperando comandos screen , e não shell . Você pode olhar através da página de manual e descobrir como dizer à tela para digitar os caracteres no shell em execução; provavelmente é possível, mas não consegui encontrá-lo em alguns minutos. (aha, é o comando "stuff" da tela: Envio de entrada para uma sessão de tela externa )

Como alternativa, você pode fazer algo assim:

#!/bin/bash
for i in 1 2 3
do
    test="test"$i
    screen -dmS $test ./my_command $i
done

que executará um nu ./my_command $ i em uma nova janela de tela.

Você também pode usar uma linha de comando assim:

    screen -dmS $test  sh -c "ulimit 1234;./my_command $i; exec /bin/bash"

sh -c "foobar" fará com que um novo shell seja executado e execute o comando foobar . Aqui nós executamos vários comandos shell. O% final exec /bin/bash inicia outro shell para que você não perca a tela se ./my_command sair.

    
por 09.12.2013 / 17:35