Se sei uno sviluppatore Linux conosci l'importanza della coerenza e dell'affidabilità delle tue sessioni. I processi di lunga durata in Linux devono continuare anche dopo che ti sei disconnesso da una sessione. Fortunatamente Linux dispone di un comando funzionale a questo scopo. IL comando nohup ti consente di mantenere i comandi in esecuzione ininterrottamente in background. In questo modo si previene la perdita di dati e si risparmia tempo prezioso. Questa guida ti guiderà attraverso tutto ciò che devi sapere sul comando nohup di Linux, dalla sua sintassi e opzioni agli esempi pratici e alla risoluzione dei problemi comuni.
Comprendere la sintassi nohup di Linux
Il comando nohup è facile da usare e diretto. Ti consente di eseguire comandi o script in background in modo da essere sicuro che continuino a essere eseguiti anche dopo esserti disconnesso dal terminale. Ecco come usarlo:
nohup [command] [arguments] &
Dovresti sostituire [comando] con il comando o lo script che desideri eseguire. E [discussione] è qualsiasi argomento o opzione richiesta dal comando. IL & Il simbolo invia il comando da eseguire 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 non si specifichi un altro percorso.
Esplorando le opzioni nohup
Sebbene il comando nohup in sé non abbia molte opzioni, capire come utilizzarlo in modo efficace con vari comandi e tecniche di reindirizzamento può migliorarne le prestazioni. Per prima cosa vediamo come possiamo ottenere informazioni sul comando nohup:
nohup –-help nohup --version
Questi due comandi ti danno alcune informazioni utili mostrando il messaggio di aiuto e la versione di nohup.
Esecuzione di un processo con il comando nohup
Se vuoi eseguire un processo con il comando nohup, puoi seguire la stessa struttura che ho spiegato nell'ultima sezione:
nohup [command]
Se vuoi eseguire un processo in background, aggiungi semplicemente & fino alla fine del tuo comando.
Esecuzione di più processi in background con il comando nohup
E se volessi eseguire più di un processo in background utilizzando il comando nohup?
nohup bash -c '[command A] && [command B]' &
Sostituire [comando A] E [comando B] con i comandi che desideri eseguire in background. Immagina di voler prima aggiornare i pacchetti di sistema e poi ripulire i file non necessari e di volerlo fare utilizzando il comando nohup:
nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &
In questo esempio, no consente ai processi di aggiornamento e pulizia di continuare a essere eseguiti in background. In questo modo le attività di manutenzione del sistema vengono completate senza la necessità di tenere aperto il terminale.
Reindirizzamento dell'output personalizzato
L'output di questo processo verrà reindirizzato a nohup.out per impostazione predefinita. Ma cosa succede se vuoi ricevere l'output in un altro percorso? Ecco come puoi farlo:
nohup [command] > [/path/to/new/output.txt]
Ricordarsi di sostituire i valori in [] con il comando e il percorso del file desiderati.
Combinazione di nohup con altri comandi
nohup può essere combinato con altri comandi e pipe per creare potenti catene di comandi. Vediamo un esempio di questo:
nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &
Ecco, il Trovare il comando viene utilizzato per cercare file di registro e grep viene utilizzato per cercare il termine “ERRORE”. L'output combinato viene reindirizzato a log_errore.txt.
In questa sezione abbiamo trattato le opzioni e i casi d'uso più comuni del comando nohup. Padroneggiando queste istruzioni puoi utilizzare efficacemente nohup per eseguire i processi Linux in background.
Errori comuni e risoluzione dei problemi
L'uso del comando nohup è generalmente semplice, ma potresti riscontrare alcuni errori comuni durante il processo. Comprendere questi errori e sapere come risolverli può farti risparmiare tempo e frustrazione. Quindi, vediamo quali sono questi errori comuni e come gestirli:
Autorizzazione negata
Questo errore si verifica quando lo script o il comando che stai tentando di eseguire non dispone dell'autorizzazione di esecuzione. L'output dell'errore è simile al seguente: nohup: impossibile eseguire il comando "myscript.sh": autorizzazione negata
Per risolvere questo problema è necessario assicurarsi che lo script o il comando disponga delle autorizzazioni corrette. È possibile aggiungere l'autorizzazione di esecuzione utilizzando il file chmod comando:
chmod +x myscript.sh nohup ./myscript.sh &
Comando non trovato
Questo errore si verifica se il comando o lo script non viene trovato nella posizione specificata o non è disponibile nel PERCORSO. L'output dell'errore è simile al seguente: nohup: impossibile eseguire il comando "myscript.sh": nessun file o directory
Per risolvere questo errore dovresti 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 PERCORSO.
Nessuna uscita
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 oppure potrebbe esserci un problema con le autorizzazioni del file. Per superare questo problema è necessario specificare esplicitamente il file di output per assicurarsi che venga 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.
Lo script non viene eseguito in background
A volte, lo script o il comando sembra essere in esecuzione, ma non in background. Il motivo è solitamente semplice. Potresti aver dimenticato di aggiungere il file & simbolo alla fine del comando per eseguirlo in background. Anche la soluzione è semplice, assicurati solo di averlo aggiunto e sei a posto.
Processo sospeso o che non risponde
Un processo avviato con nohup potrebbe bloccarsi o non rispondere. Ciò può accadere se il processo è in attesa di input o se ci sono problemi con le risorse a cui sta tentando di accedere. Esistono due soluzioni a questo problema:
- Verifica l'input richiesto: Assicurati che il comando non richieda alcun input interattivo.
- Problemi relativi alle risorse: Verificare che il comando abbia accesso alle risorse necessarie (ad esempio, file, rete).
Sovrascrivere nohup.out
Se stai eseguendo più processi in background utilizzando il comando nohup, potresti sovrascrivere involontariamente il file nohup.out file. Per evitare questo problema, puoi scegliere un percorso specifico per ciascun processo. In questo modo ogni processo ha il suo file di output univoco e il percorso predefinito non viene sovrascritto.
Imparando a conoscere l'errore comune nohup e le relative soluzioni, puoi utilizzare il comando nohup senza problemi.
Conclusione
Il comando nohup è un ottimo strumento per qualsiasi utente Linux che ha bisogno di eseguire processi in background perché garantisce che i processi continuino a essere eseguiti anche dopo la disconnessione. In questa guida abbiamo trattato la sintassi di base, esplorato varie opzioni e discusso errori comuni insieme a suggerimenti per la risoluzione dei problemi. Padroneggiare il comando nohup ti consente di gestire attività di lunga durata in modo efficiente, migliorando la tua produttività e le capacità di gestione del sistema.
Se sei uno sviluppatore Linux che sta cercando di massimizzare la tua esperienza Linux, considera l'aggiornamento a un sistema affidabile VPS Linux. Il nostro servizio VPS basato su cloud offre supporto 24 ore su 24, 7 giorni su 7 e una garanzia di uptime del 99,95%, il che significa che le tue applicazioni funzionano sempre senza intoppi e puoi ottenere assistenza in qualsiasi momento della giornata. 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 preinstallata, rendendo la configurazione semplice e veloce. Porta i tuoi progetti Linux al livello successivo con un VPS che fornisce la potenza e la flessibilità di cui hai bisogno.
Domande frequenti
Qual è la differenza tra no E &?
no impedisce che un processo venga terminato quando l'utente si disconnette, mentre & esegue un processo in background. Utilizzando no garantisce che il processo continui dopo il logout e combinandolo con & gli consente di funzionare in background.
Perché viene utilizzato nohup?
no viene utilizzato per assicurarsi che un comando o uno script continui a essere eseguito anche dopo che l'utente si è disconnesso o il terminale è stato chiuso. È essenziale per i processi di lunga durata che devono rimanere attivi senza l'intervento dell'utente.
Cos'è il file nohup out?
IL nohup.out file è il file di output predefinito in cui nohup reindirizza l'output standard e l'errore standard di un comando. Se non viene specificato nessun altro file di output, l'output del comando viene salvato in nohup.out nella directory corrente.