2011-11-16 27 views
6

Estoy tratando de ejecutar una secuencia de comandos con nohup, pero el comando pasa a tomar una línea completa de parámetros con la variable $ *. Trato de ejecutar el comando como este:ejecutando el comando nohup en la secuencia de comandos que toma todos los parámetros

nohup time ./build_all all & 

Pero esto me está dando el siguiente error en nohup.out:

./build_all: DISPLAY=ted:0.0: is not an identifier 

Cualquier ayuda apreciada.

Ted

========================================= ======================================

Me doy cuenta de que Peter John Acklam tenía razón. El error no se debe a nohup, sino debido a la secuencia de comandos, no estoy seguro de lo que estoy haciendo mal porque la sintaxis me parece correcta. También es un poco extraño que cuando ejecuto el script por sí mismo, no veo el error, pero cuando trato de ejecutarlo con nohup, veo el extraño error.

De todos modos, el comienzo de la secuencia de comandos se parece a esto:

#!/bin/bash 

export DISPLAY=ted:0.0 # sets the display 
export RELEASE=v1.0 

node=`uname -n` 

Respuesta

6

Basta con colocar los argumentos de “build_all” en la línea de comandos, como para cualquier otro comando:

nohup time ./build_all args to build_all go here & 

y la los argumentos se pasarán a "build_all", no a "time" o "nohup". El signo & será interpretado correctamente por el intérprete de órdenes, y no se pasará como argumento a ninguno de los comandos.

+0

eso es extraño, eso no parecía funcionar cuando lo probé. El error puede haber estado en otro lugar entonces. – Flethuseo

+0

Hice lo que me sugirió, pero recibo un error extraño con la variable DISPLAY – Flethuseo

+0

El error variable "DISPLAY" se debe a un error de sintaxis en "build_all", y no tiene nada que ver con "nohup" o "time". Quizás puedas mostrar la línea en "build_all" que contiene la cadena "DISPLAY = ted: 0.0"? –

1

Los argumentos del script (parámetros) simplemente siguen el nombre del script y preceden al ampersand.

Cuestiones relacionadas