Traté de ejecutar un programa Java de ejemplo usando la siguiente línea de comando. Sin embargo, no sé para qué se < /dev/null &
utiliza la parte posterior .
java -cp /home/weka.jar weka.classifiers.trees.J48 –t train_file >& log < /dev/null &
Traté de ejecutar un programa Java de ejemplo usando la siguiente línea de comando. Sin embargo, no sé para qué se < /dev/null &
utiliza la parte posterior .
java -cp /home/weka.jar weka.classifiers.trees.J48 –t train_file >& log < /dev/null &
Respuestas:
< /dev/null
se utiliza para enviar instantáneamente EOF al programa, de modo que no espere entrada ( /dev/null
el dispositivo nulo es un archivo especial que descarta todos los datos escritos en él, pero informa que la operación de escritura se realizó correctamente y no proporciona datos para cualquier proceso que lea de él, produciendo EOF inmediatamente). &
es un tipo especial de separador de comandos que se utiliza para poner en segundo plano el proceso anterior
Sin conocer el programa al que se llama, no sé directamente por qué es necesario ejecutarlo de esta manera.
</dev/null
desconecta la entrada del programa del terminal. Algunos programas reaccionan de manera diferente según a qué esté conectada su entrada estándar. Con la redirección </dev/null
, el programa puede decir que su entrada no proviene de un terminal y recibirá una indicación de fin de archivo inmediatamente si intenta leer desde su entrada estándar.
El solitario &
al final hace que el programa se ejecute en segundo plano. Esto significa que recibirá un aviso de shell de inmediato. Sin el &
, obtendría un indicador de shell solo cuando el programa termine de ejecutarse.
Tenga en cuenta que el independiente &
no está relacionado con >&
. >&
es un operador de redirección (en tcsh, bash y zsh) que redirige tanto la salida estándar del programa como el error estándar del programa al nombre de archivo especificado después del operador (aquí log
).
En otras palabras, lo que hace el shell cuando ve esta línea de comando es:
/dev/null
(el dispositivo nulo ).log
(creando el archivo si aún no existe y truncándolo si existe).java
en el $PATH
.-cp
, /home/weka.jar
, weka.classifiers.trees.J48
, –t
, train_file`.