50% di sconto tutti i piani, offerta a tempo limitato. A partire da $2.48/mo
8 min rimasti
Server e sistema operativo

Come funziona il comando nohup in Linux – Sintassi, casi d'uso ed esempi

Ada Lovegood By Ada Lovegood 8 minuti di lettura Aggiornato 14 lug 2024
comando nohup

Se sei uno sviluppatore Linux sai quanto sia importante la coerenza e l'affidabilità delle tue sessioni. I processi a lunga esecuzione su Linux devono continuare anche dopo che hai chiuso la sessione. Per fortuna, Linux ha un comando adatto a questo scopo. Il comando nohup ti consente di mantenere i comandi in esecuzione senza interruzioni in background. In questo modo evita la perdita di dati e ti fa risparmiare tempo prezioso. Questa guida ti porterà attraverso tutto ciò che devi sapere sul comando nohup di Linux, dalla sua sintassi e opzioni a esempi pratici e alla risoluzione dei problemi comuni.

Comprendere la Sintassi di nohup Linux

Il comando nohup è facile da usare e diretto. Ti permette di eseguire comandi o script in background così sei sicuro che continuino l'esecuzione anche dopo che esci dal terminale. Ecco come usarlo:

nohup [command] [arguments] &

Dovresti sostituire [command] con il comando o lo script che vuoi eseguire. E [argument] sono gli argomenti o le opzioni richiesti dal comando. Il simbolo & esegue il comando in background. Vediamo un esempio:

nohup myscript.sh &

In questo esempio, myscript.sh è uno script bash che continuerà a essere eseguito anche se chiudi il terminale. L'output verrà reindirizzato a un file denominato nohup.out per impostazione predefinita, a meno che tu non specifichi un altro percorso.

Esplorare le Opzioni di nohup

Sebbene il comando nohup in sé non abbia molte opzioni, imparare a usarlo efficacemente con vari comandi e tecniche di reindirizzamento può migliorarne le prestazioni. Prima di tutto, vediamo come ottenere informazioni sul comando nohup:

nohup –-help 
nohup --version

Questi due comandi ti forniscono informazioni utili mostrando il messaggio di aiuto e la versione di nohup.

Eseguire un Processo con il Comando nohup

Se vuoi eseguire un processo con il comando nohup, puoi seguire la stessa struttura che ho spiegato nella sezione precedente:

nohup [command]

Se vuoi eseguire un processo in background, aggiungi semplicemente & alla fine del tuo comando.

Eseguire Più Processi in Background con il Comando nohup

Ora, cosa fare se vuoi eseguire più di un processo in background usando il comando nohup?

nohup bash -c '[command A] && [command B]' &

Sostituisci [command A] e [command B] con i comandi che vuoi eseguire in background. Immagina di voler prima aggiornare i pacchetti del sistema e poi pulire i file non necessari, e di voler fare tutto questo usando il comando nohup:

nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &

In questo esempio, nohup consente sia l'aggiornamento che i processi di pulizia di continuare l'esecuzione in background. Quindi le tue attività di manutenzione del sistema vengono completate senza dover tenere il terminale aperto.

Reindirizzare l'Output Personalizzato

L'output di questo processo verrà reindirizzato a nohup.out per impostazione predefinita. Ma cosa fare se vuoi ricevere l'output in un altro percorso? Ecco come puoi farlo:

nohup [command] > [/path/to/new/output.txt]

Ricorda di sostituire i valori in [] con il comando e il percorso del file desiderati.

Combinare nohup con Altri Comandi

nohup può essere combinato con altri comandi e pipe per creare catene di comandi potenti. Vediamo un esempio:

nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &

I notice you've provided "Here, the" which appears to be incomplete. Could you please provide the full text or label you'd like me to translate to Italian? trova il comando viene utilizzato per cercare i file di log e grep viene utilizzato per cercare il termine "ERROR". L'output combinato viene reindirizzato a error_logs.txt.

In questa sezione abbiamo coperto le opzioni e i casi d'uso più comuni del comando nohup. Padroneggiando queste istruzioni, puoi usare efficacemente nohup per eseguire processi Linux in background.

Errori Comuni e Risoluzione dei Problemi

Usare il comando nohup è generalmente semplice, ma potresti incontrare alcuni errori comuni durante il processo. Comprendere questi errori e sapere come risolverli può farti risparmiare tempo e frustrazione. Vediamo quali sono questi errori comuni e come gestirli:

Permesso negato

Questo errore si verifica quando lo script o il comando che stai cercando di eseguire non ha il permesso di esecuzione. L'output dell'errore assomiglia a questo: nohup: failed to run command 'myscript.sh': Permission denied

Per risolvere questo problema devi assicurarti che lo script o il comando abbia i permessi corretti. Puoi aggiungere il permesso di esecuzione usando chmod comando:

chmod +x myscript.sh 
nohup ./myscript.sh &

Comando Non Trovato

Questo errore si verifica se il comando o lo script non si trova nel percorso specificato o non è disponibile nel tuo PATH. L'output dell'errore è simile a questo: nohup: failed to run command 'myscript.sh': No such file or directory

Per risolvere questo errore devi verificare che il comando o lo script esista e si trovi nella directory corretta. Potrebbe essere necessario fornire il percorso assoluto dello script:

nohup /path/to/myscript.sh &

Assicurati inoltre che il comando sia installato e disponibile nel tuo PATH.

Nessun Output

A volte potresti notare che non c'è output nel terminale o nel file di output. Se il comando produce output ma non lo vedi, potrebbe essere reindirizzato in un percorso diverso dal file predefinito o potrebbe esserci un problema di permessi. Per risolvere questo problema devi specificare esplicitamente il file di output per assicurarti che sia reindirizzato correttamente:

nohup myscript.sh > output.log 2>&1 &

Ad esempio, questo comando reindirizza sia l'output standard che l'errore standard a un file denominato output.log.

Script Non in Esecuzione in Background

A volte lo script o il comando sembra in esecuzione, ma non in background. La ragione è solitamente semplice. Potresti aver dimenticato di aggiungere il & simbolo alla fine del comando per eseguirlo in background. La soluzione è altrettanto semplice: assicurati di averlo aggiunto e sei a posto.

Processo Bloccato o Non Responsivo

Un processo avviato con nohup potrebbe bloccarsi o diventare non responsivo. Questo può accadere se il processo è in attesa di input o se ci sono problemi con le risorse a cui sta cercando di accedere. Ci sono due soluzioni a questo problema:

  • Controlla gli Input Necessari: Assicurati che il comando non richieda input interattivo.
  • Problemi di Risorse: Verifica che il comando abbia accesso alle risorse necessarie (ad esempio file, rete).

Sovrascrittura di nohup.out

Se stai eseguendo più processi in background usando il comando nohup, potresti sovrascrivere involontariamente il file nohup.out Per evitare questo problema, puoi scegliere un percorso specifico per ogni processo. In questo modo ogni processo ha il suo file di output unico e il percorso predefinito non viene sovrascritto.

Imparando a conoscere gli errori comuni di nohup e le loro soluzioni, puoi usare il comando nohup senza problemi.

Conclusione

Il comando nohup è uno strumento eccellente per qualsiasi utente Linux che ha bisogno di eseguire processi in background perché assicura che i tuoi processi continuino a funzionare anche dopo il logout. In questa guida abbiamo coperto la sintassi di base, esplorato varie opzioni e discusso gli errori comuni insieme ai suggerimenti per la risoluzione dei problemi. Padroneggiare il comando nohup ti consente di gestire efficientemente i task a lungo termine, il che migliora la tua produttività e le tue competenze di gestione del sistema.

Se sei uno sviluppatore Linux che vuole massimizzare la tua esperienza con Linux, considera l'upgrade a un Linux VPSaffidabile. Il nostro servizio VPS basato su cloud offre supporto 24/7 e una garanzia di uptime del 99,95%, il che significa che le tue applicazioni funzionano senza intoppi in ogni momento e puoi ricevere aiuto in qualsiasi ora del giorno. Con un'infrastruttura solida e risorse affidabili, il nostro VPS è progettato per soddisfare le esigenze dei programmatori Linux. Inoltre, puoi avere la tua distribuzione Linux preferita pre-installata, rendendo la configurazione veloce e semplice. Porta i tuoi progetti Linux al livello successivo con un VPS che offre la potenza e la flessibilità di cui hai bisogno.

Domande frequenti

Qual è la differenza tra nohup e &?

nohup impedisce a un processo di essere terminato quando l'utente effettua il logout, mentre & esegue un processo in background. Usando nohup assicuri che il processo continui dopo il logout e combinandolo con & gli consenti di funzionare in background.

Perché si usa nohup?

nohup viene utilizzato per assicurare che un comando o uno script continui a funzionare anche dopo che l'utente effettua il logout o il terminale è chiuso. È essenziale per i processi a lungo termine che devono rimanere attivi senza intervento dell'utente.

Cos'è il file nohup.out?

Il nohup.out file è il file di output predefinito dove nohup reindirizza l'output standard e l'errore standard di un comando. Se non è specificato alcun altro file di output, l'output del comando viene salvato in nohup.out nella directory corrente.

Condividi

Altro dal blog

Continua a leggere.

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud: immagine di copertina con pannelli di app intorno a una dashboard Cosmos.
Server e sistema operativo

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud: file, media, password, automazione e altro!

Dopo aver configurato Cosmos Cloud e voler vedere quali app si abbinano bene, oppure non hai ancora deciso su Cosmos e vuoi semplicemente scoprire quanto bene si adatta al tuo flusso di lavoro

Nick ArgentoNick Argento lettura di 16 minuti
Portainer vs Cosmos Cloud per la gestione di app Docker: copertina con diagramma di configurazione ibrida e diagramma di operazioni neon rispetto ai blocchi di accesso.
Server e sistema operativo

Portainer vs Cosmos Cloud: quale scegliere per la gestione di app Docker

Se conosci già Docker e vuoi semplicemente un modo più pulito per eseguire uno stack di app in crescita, ecco la risposta breve a Portainer vs Cosmos Cloud. Portainer è la scelta più forte per

Nick ArgentoNick Argento 14 minuti di lettura
Cosmos Cloud vs CasaOS vs Umbrel: grafica di confronto che mostra tre percorsi self-hosted all'interno di un'astrazione unica di rete cloud.
Server e sistema operativo

Cosmos Cloud vs CasaOS vs Umbrel: quale piattaforma self-hosted si adatta al tuo setup?

La risposta breve è che CasaOS è ancora il punto di partenza più semplice, Umbrel ha l'aspetto più curato e pulito, e Cosmos Cloud ha più senso quando vuoi un controllo più stretto sui domini

Nick ArgentoNick Argento 11 min di lettura

Pronto per il deployment? A partire da $2,48/mese.

Cloud indipendente, dal 2008. AMD EPYC, NVMe, 40 Gbps. Rimborso entro 14 giorni.