Se esco da Terminal.app, procedo con i processi da esso avviati?

6

Se utilizzo Terminal per avviare un processo che richiede molto tempo (in questo caso, eliminare un grande file .sparsebundle sulla mia Time Capsule, che potrebbe richiedere ore) e se poi esco dall'app Terminal prima che tale processo sia completato, anche questo processo in corso (la cancellazione) si chiude? Oppure Terminal funge semplicemente da "trigger" e il processo viene eseguito autonomamente indipendentemente dal fatto che Terminal.app sia attivo o meno?

    
posta Rick Lecoat 04.01.2018 - 08:21
fonte

1 risposta

6

Affinché il comando continui dopo aver chiuso la finestra dell'applicazione Terminale, è necessario eseguire quanto segue.

  1. 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.
  2. 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).
  3. 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
    
risposta data 04.01.2018 - 10:59
fonte

Leggi altre domande sui tag