Estou tentando descobrir como escrever um script que inicie o (s) programa (s) nas sessões da tela GNU 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 eu preciso é executar o comando na sessão de tela e desanexar esta sessão imediatamente.
Obrigado pelas respostas, mas agora enfrentei outro problema. O script para de funcionar depois que eu coloco algumas variáveis para o meu "programa e programa2". Algo assim:
#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg
por algum motivo "-f config.cfg" foi ignorado. Também estou tentando citar o comando e não ajuda também.
scripts
gnu-screen
TbMa
fonte
fonte
-X
opção?Respostas:
Você realmente quis colocar
\
o final da linha? Caso contrário, tente removê-los - eles escapam do seguinte caractere.soltar também
-X
ajuda a instalação a trabalhar para mim, por exemplo:falha com
No screen session found
, no entanto:funciona bem. Como tal, suspeito que o seguinte funcione para você:
Lembre-se de que, se você executar isso no momento da inicialização, $ HOME não será o mesmo que após o login como um usuário específico. Se você precisar executá-lo como um determinado usuário, precisará usá
su
-lo para executá-lo como esse usuário, e especificar o caminho completo removerá qualquer ambiguidade:Ou, você chamaria o script inteiro acima como
su - username /path/to/your/script
.fonte
screen -S test -d -m $HOME/folder/folder/.program
quase faz exatamente o que estou procurando, exceto se a pasta / .program estiver concluída, a sessão na tela será fechada automaticamente. Existe alguma maneira de manter a sessão da tela (shell) em execução mesmo após a conclusão do programa? Talvez, em vez de executar o programa exclusivamente, inicie um shell que inicie o programa e retorne ao prompt do shell, ou algo assim?Como Cry Havok mencionado, você pode colocar o programa diretamente na linha de comando.
Se você realmente deve usar a opção -X, então a) precisa especificar o comando 'screen' eb) a sessão precisa existir previamente.
fonte
sleep
comandos explícitos para dar tempo à tela para iniciar a sessão antes de enviar o comando.