Si puedo utilizar el Terminal para iniciar un proceso que consume tiempo (en este caso, la eliminación de un grande .archivo sparsebundle en mi Cápsula del Tiempo, que podría tomar horas) y si se me salga de la aplicación Terminal en sí, antes de que el proceso se ha completado, hace que el proceso en curso (la eliminación) también dejar de fumar? O no Terminal sólo actúan como el 'trigger' y el proceso se ejecuta de forma autónoma, independientemente de si el Terminal.es la aplicación activa o no?
Respuesta
¿Demasiados anuncios?Para el comando para continuar después del cierre de la Terminal de la ventana de la aplicación, usted necesita hacer lo siguiente.
- Preceder el comando con
nohup
. Esto permitirá que el comando para continuar después de que el Terminal de la ventana de la aplicación se cierra. Esto también permite que el comando para continuar después de dejar la aplicación Terminal. - Redirigir la salida estándar y el error estándar para el mismo o diferentes archivos. Esto le da a la salida de un lugar para ir, de lo contrario, el valor predeterminado será de uso. (Consulte la página man de abajo).
- Añadir un
&
hasta el final de la línea de comandos. Este se ejecuta el comando en el fondo, de lo contrario no se obtendrá un símbolo del sistema hasta que finaliza el comando.
Por ejemplo, si yo quería usar la find
comando para buscar el archivo readgpt
e imprimir los resultados de un Terminal de la ventana de la aplicación, me gustaría ejecutar la orden dada a continuación. Nota: Aquí, no me importa acerca de los mensajes de error, así que me redirige error estándar a /dev/null
.
find / -name readgpt -print 2>/dev/null
Ahora, si me quería cerca de la Terminal de la ventana de la aplicación y de la vista de los resultados más tarde, me iba a ejecutar el siguiente comando.
nohup find / -name readgpt -print >~/Documents/results.txt 2>/dev/null &
Después de entrar en el de arriba, se puede conseguir un trabajo número entre paréntesis seguido por un número de proceso. Un ejemplo es la siguiente.
[1] 1456
Usted puede obtener el estado de este proceso mediante la introducción de la ps
de comandos, 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
Usted puede terminar este proceso mediante la introducción de la kill
de comandos, 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 introduce
kill
comando en una ventana de la que difiere de la utilizada para crear el proceso, entonces no habrá ninguna salida.
La página man de la nohup
comando es la siguiente.
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