Mantendo Subshell rodando em segundo plano

1

Estou tentando executar um script em segundo plano usando '&' no final do comando, mas aparentemente, não está funcionando.

Este é o problema que estou enfrentando. Para usar um software de simulação pago, o provedor me instruiu a executar um determinado script para permitir o acesso à licença. Devo deixar isso aberto e iniciar o software a partir de outro terminal (no modo batch sem GUI, já que estou usando um cluster de supercomputação).

O problema é que só posso enviar um script para o agendador no nó principal (que estou conectado por meio do ssh) e o trabalho é encaminhado para um dos nós de computação. Então, em vez de iniciar um novo terminal para executar o software, tentei executar o script fornecido em segundo plano usando '&'. Isso não deu certo. Parece que a conexão com o servidor de licenças está sendo fechada assim que é iniciada com esse método.

./script1.sh &

Usando

xterm -e sh script1.sh 

para abri-lo em outro terminal deu o seguinte erro -

xterm: Xt error: Can't open display: 

xterm: DISPLAY is not set

Qualquer ajuda seria muito apreciada.

    
por Thariq Shanavas 12.07.2017 / 17:29

2 respostas

3

Parece que o trabalho enviado por você precisa ser aquele que executa as duas tarefas.

#!/bin/sh
license </dev/null >license.out 2>&1 &
license_pid=$!
simulator
kill $license_pid
wait $license_pid

Isso salva a saída padrão e o erro padrão do processo de licenciamento para um arquivo, para que você possa tail para ver o que deseja informar se houver um problema.

    
por 12.07.2017 / 17:45
2

Você não pode ssh para o nó e iniciar uma cópia de screen ? Dê uma olhada na página de manual. Ele permite que você tenha duas ou mais sessões como (efetivamente) subprocessos do seu shell de login ssh .

Então, ssh como normal. Iniciar screen . Digite Ctrl - A seguido de c para criar uma segunda tela. Comece a coisa da licença naquela tela, então use Ctrl - A Ctrl - A para voltar ao original tela. Comece sua aplicação lá. Use a seqüência de Ctrl - A Ctrl - A para alternar, se necessário.

Para desanexar sem terminar, use Ctrl - A Ctrl - d ; para reconectar mais tarde (mesmo depois de encerrar sua sessão ssh e fazer login novamente, use screen -x .

    
por 12.07.2017 / 17:38