Execute um programa com a tela GNU e separe-o imediatamente após

22

Estou tentando descobrir como escrever um script que inicie o (s) programa (s) nas sessões do GNU Screen na inicialização do sistema. Eu estou tentando isso:

#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \

mas o comando não pode ser executado porque a sessão já está desanexada? A única coisa que preciso é executar o comando na sessão de tela e desanexar esta sessão imediatamente.

Obrigado por respostas, mas agora enfrentei outro problema. Script pára de funcionar depois que eu coloquei algumas variáveis para o meu "programa e programa2". Algo parecido com isto:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg

por algum motivo "-f config.cfg" foi ignorado. Eu também estou tentando citar o comando e não ajuda também.

    
por TbMa 22.09.2011 / 17:27

2 respostas

32

Você realmente quis colocar o \ no final da linha? Se não, tente removê-los - eles escapam do seguinte caractere.

também, descartar o -X ajuda a configuração a funcionar para mim, por exemplo:

screen -S test -d -m -X touch /tmp/test

falha com No screen session found , no entanto:

screen -S test -d -m touch /tmp/test

funciona bem. Como tal, suspeito que o seguinte funcionará para você:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2

Lembre-se de que, se você executar isso no momento da inicialização, $ HOME não será o mesmo depois que você efetuar login como usuário específico. Se você precisar executá-lo como um determinado usuário, precisará usar os gostos de su para executá-lo como esse usuário, e especificar o caminho completo removerá qualquer ambigüidade:

#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2

Ou, você chamaria o script inteiro acima como su - username /path/to/your/script .

    
por Cry Havok 22.09.2011 / 18:51
4

Como o Cry Havok mencionou, você pode colocar o programa na linha de comando.

Se você realmente precisa usar a opção -X, então a) você precisa especificar o comando 'screen' eb) a sessão precisa existir de antemão.

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2
    
por Arcege 22.09.2011 / 18:56