Un problema con su primer comando es que redirige stderr a donde está stdout (si cambió $ a a & como se sugiere en el comentario) y luego redirige stdout a algún archivo de registro, pero eso no arrastra el stderr redirigido . Debe hacerlo en el otro orden, primero envíe stdout a donde desea que vaya y luego envíe stderr a la dirección stdout está en
some_cmd > some_file 2>&1 &
y luego podrías lanzar el & para enviarlo a un segundo plano. Se puede acceder a los trabajos con el jobs
comando. jobs
le mostrará los trabajos en ejecución y los numerará. A continuación, puede hablar sobre los trabajos utilizando un% seguido de un número similar kill %1
.
Además, sin el & en el extremo con el que puede suspender el comando Ctrlz, use el bg
comando para ponerlo en segundo plano y fg
volver a ponerlo en primer plano. En combinación con el jobs
comando, esto es poderoso.
para aclarar la parte anterior sobre el orden en que escribe los comandos. Supongamos que stderr es la dirección 1002, stdout es la dirección 1001 y el archivo es 1008. El comando se lee de izquierda a derecha, por lo que lo primero que ve en el suyo es 2>&1
quién mueve stderr a la dirección 1001, luego ve > file
qué se mueve stdout a 1008, pero mantiene stderr en 1001. No extrae todo lo que apunta a 1001 y lo mueve a 1008, sino que simplemente hace referencia a stdout y lo mueve al archivo.
Al revés, mueve stdout a 1008, y luego mueve stderr al punto al que apunta stdout, 1008 también. De esta manera, ambos pueden apuntar al archivo único.
2>$1
probablemente se supone que es2>&1
.