Affinché il comando continui dopo aver chiuso la finestra dell'applicazione Terminale, è necessario eseguire quanto segue.
- Precedere il comando con
nohup
. Ciò consentirà al comando di continuare dopo la chiusura della finestra dell'applicazione Terminale. Ciò consente inoltre al comando di continuare dopo l'uscita dall'applicazione Terminale.
- Reindirizza lo standard e l'errore standard sugli stessi file o su file diversi. Questo dà all'output un posto dove andare, altrimenti verrà usato il default. (Vedi la pagina man in basso).
- Aggiungi un
&
alla fine della riga di comando. Questo esegue il comando in background, altrimenti non riceverai un prompt dei comandi fino al termine del comando.
Ad esempio, se volessi utilizzare il comando find
per cercare il file readgpt
e stampare i risultati in una finestra dell'applicazione Terminale, eseguirò il comando indicato di seguito. Nota: qui, non mi interessano i messaggi di errore, quindi ho reindirizzato l'errore standard a /dev/null
.
find / -name readgpt -print 2>/dev/null
Ora, se volessi chiudere la finestra dell'applicazione Terminale e visualizzare i risultati in seguito, eseguirò il comando seguente.
nohup find / -name readgpt -print >~/Documents/results.txt 2>/dev/null &
Dopo aver inserito quanto sopra, riceverai un numero di lavoro tra parentesi seguito da un numero di processo. Di seguito è riportato un esempio.
[1] 1456
Puoi ottenere lo stato di questo processo inserendo il comando ps
, come mostrato sotto.
Marlin:~ davidanderson$ ps 1456
PID TT STAT TIME COMMAND
1456 s001 U 0:06.83 find / -name readgpt -print
Puoi terminare questo processo inserendo il comando kill
, come mostrato sotto.
Marlin:~ davidanderson$ kill 1456
[1]+ Terminated: 15 nohup find / -name readgpt -print > ~/Documents/results.txt 2> /dev/null
Note: If you enter the kill
command in a window that differs from one used to create the process, then there probably will be no output.
La pagina man per il comando nohup
è riportata di seguito.
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