trap “” HUP v.s Nohup? Como posso executar uma parte do script de shell no modo nohub?

2

Eu quero executar um script de shell no fim de semana, mas quero ter certeza de que o terminal perde a conexão, meu script não será terminado. Eu uso nohup para todo o invokation script, mas eu também quero executar uma parte do meu script de shell de uma forma que se alguém fecha o meu terminal, o meu script é executado em segundo plano ainda. Aqui está um exemplo simples:

#!/bin/bash

echo "Start the trap" 
trap " " HUP 
echo "Sleeping for 60 Seconds"
sleep 60 echo "I just woke up!"

Por favor, sugira o que devo fazer? A armadilha "" HUP parece não funcionar quando eu fechar meu separador de terminal.

    
por Alex 13.11.2012 / 16:21

2 respostas

3

Você já considerou usar screen em vez da abordagem nohup ?

Abra uma sessão de tela e execute o script normalmente. Desanexe da sessão usando Ctrl-a Ctrl-d .

Ao retornar, você pode reconectar-se à sessão usando screen -r ou possivelmente, screen -ls e selecionando a sessão correta a ser restaurada.

Veja também: Como se reconectar a uma sessão ssh desconectada

    
por 13.11.2012 / 16:46
0

Tenho certeza de que você deseja trap "" HUP . não trap " " HUP .

trap [-lp] [[arg] signal_spec ...]

ARG is a command to be read and executed when the shell receives the signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC is supplied) or '-', each specified signal is reset to its original value. If ARG is the null string each SIGNAL_SPEC is ignored by the shell and by the commands it invokes.

O " " não é uma cadeia nula, mas "" é.

    
por 13.11.2012 / 17:30