Para que el comando continúe después de cerrar la ventana de la aplicación de Terminal, debe hacer lo siguiente.
- Precede el comando con
nohup
. Esto permitirá que el comando continúe después de que se cierre la ventana de la aplicación Terminal. Esto también permite que el comando continúe después de salir de la aplicación de Terminal.
- Redirigir la salida estándar y el error estándar a los mismos archivos o diferentes. Esto le da a la salida un lugar para ir, de lo contrario se usará el valor predeterminado. (Vea la página de manual a continuación).
- Agregue un
&
al final de la línea de comando. Esto ejecuta el comando en segundo plano, de lo contrario no obtendrá un indicador de comandos hasta que el comando finalice.
Por ejemplo, si quisiera usar el comando find
para buscar el archivo readgpt
e imprimir los resultados en una ventana de aplicación de Terminal, ejecutaría el comando que se indica a continuación. Nota: aquí, no me importan los mensajes de error, así que redirigí el error estándar a /dev/null
.
find / -name readgpt -print 2>/dev/null
Ahora, si quisiera cerrar la ventana de la aplicación Terminal y ver los resultados más adelante, ejecutaría el siguiente comando.
nohup find / -name readgpt -print >~/Documents/results.txt 2>/dev/null &
Después de ingresar lo anterior, obtendrá un número de trabajo entre paréntesis seguido de un número de proceso. A continuación se muestra un ejemplo.
[1] 1456
Puede obtener el estado de este proceso ingresando el comando ps
, como se muestra a continuación.
Marlin:~ davidanderson$ ps 1456
PID TT STAT TIME COMMAND
1456 s001 U 0:06.83 find / -name readgpt -print
Puede finalizar este proceso ingresando el comando kill
, como se muestra a continuación.
Marlin:~ davidanderson$ kill 1456
[1]+ Terminated: 15 nohup find / -name readgpt -print > ~/Documents/results.txt 2> /dev/null
Nota: si ingresa el comando kill
en una ventana que difiere de la que se usó para crear el proceso, probablemente no habrá salida.
La página del manual para el comando nohup
se muestra a continuación.
NOHUP(1) BSD General Commands Manual NOHUP(1)
NAME
nohup -- invoke a utility immune to hangups
SYNOPSIS
nohup [--] utility [arguments]
DESCRIPTION
The nohup utility invokes utility with its arguments and at this
time sets the signal SIGHUP to be ignored. If the standard output
is a terminal, the standard output is appended to the file nohup.out
in the current directory. If standard error is a terminal, it is
directed to the same place as the standard output.
Some shells may provide a builtin nohup command which is similar or
identical to this utility. Consult the builtin(1) manual page.
ENVIRONMENT
The following variables are utilized by nohup:
HOME If the output file nohup.out cannot be created in the current
directory, the nohup utility uses the directory named by HOME
to create the file.
PATH Used to locate the requested utility if the name contains no
'/' characters.
EXIT STATUS
The nohup utility exits with one of the following values:
126 The utility was found, but could not be invoked.
127 The utility could not be found or an error occurred in
nohup.
Otherwise, the exit status of nohup will be that of utility.
SEE ALSO
builtin(1), csh(1), signal(3)
STANDARDS
The nohup utility is expected to be IEEE Std 1003.2 (''POSIX.2'')
compatible.
BUGS
Two or more instances of nohup can append to the same file, which
makes for a confusing output.
BSD July 19, 2001 BSD