[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Duda sobre nohup



On Tue, Apr 25, 2006 at 12:05:14AM +0200, Iñaki wrote:
> ¿Cómo puedo hacer un "nohup" a todo eso? ¿funcionaría sólo con lo siguiente?
> 
>     nohup  cat archivo.txt | sed '...bla bla bla....' | scrip    &

No, no funciona. Eso corre 'cat archivo txt' bajo nohup y manda la
salida de _eso_ a sed.

> ¿o debo meter paréntesis?

Tampoco.

A ver si me explico: Cuando le das la línea de comandos al shell, éste
la divide en 'componentes de pipe', ejecuta cada uno conectandolos
adecuadamente, y espera a que terminen o regresa inmediatemente según
si le diste '&'.

En el caso que pones, los componentes del pipe son:

1. nohup cat archivo.txt
2. sed '..bla...bla'
3. scrip

Por eso ejecuta nada mas el cat bajo nohup. El problema es que el
shell ve la linea _antes_ que nohup.

Si le pones parentesis lo que el shell ve es:

nohup (un pipe que hay que ejecutar) &

Y eso es un error de sintáxis, por que 'un pipe' no es un argumento
válido para un comando, los argumentos son _textos_

Entonces, lo que necesitas es agrupar todo el comando _como texto_ y
pasarselo así a nohup. Primera idea:

nohup 'cat archivo.txt| etc.etc' &

Pero esto tampoco funciona, por que entonces nohup busca en el path
para tratar de ejecutar un comando que se llama 
  'cat archivo.txt| etc.etc',
lo cual obviamente no existe.

Entonces, lo que necesitamos es un programa que sepa interpretar una
linea de comandos de shell, para que la parta en los pedazos
adecuados, y ejecutar _ese_ programa bajo nohup.

(pensando, pensando, ...) ¡El shell!

nohup sh -c 'cat archivo.txt| etc.etc' &

Eso, me consta, funciona como quieres.

-- 
Rodrigo Gallardo            PGP Key ID:  ADC9BC28 
Fingerprint: 7C81 E60C 442E 8FBC D975  2F49 0199 8318 ADC9 BC28
http://www.nul-unu.com      http://www.nul-unu.com/blogs/elucubrando

Attachment: signature.asc
Description: Digital signature


Reply to: