El Martes, 25 de Abril de 2006 00:31, Luis Rodrigo Gallardo Cruz 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.
Sencillamente magistral, no sé qué más decir. Muchísimas gracias por una explicación inmejorable. -- intentando mejorar Konqueror: http://konqueror4.linuxdevel.net y si te gusta puedes votar: ;) http://www.kde-look.org/content/show.php?content=36385

