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