El 24/04/06, Luis Rodrigo Gallardo Cruz<[EMAIL PROTECTED]> escribió: > 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 >
Clap, clap, clap. No se si le funcione al listero de la consulta, pero que soberbia respuesta. Que manera de responder. Marcos Delgado.

