50% rabat alle planer, begrænset tid. Start kl $2.48/mo
8 min tilbage
Servere & OS

Sådan fungerer nohup-kommando i Linux – Syntaks, brugssager og eksempler

Ada Lovegood By Ada Lovegood 8 min læst Opdateret 14. juli 2024
nohup kommando

Hvis du er en Linux-udvikler, ved du vigtigheden af ​​konsistens og pålidelighed af dine sessioner. Langvarige processer i Linux skal fortsætte, selv efter du har logget ud af en session. Heldigvis har Linux en funktionel kommando til dette formål. De nohup kommando giver dig mulighed for at holde kommandoer kørende uafbrudt i baggrunden. På denne måde forhindrer det datatab og sparer værdifuld tid. Denne guide vil lede dig gennem alt, hvad du behøver at vide om Linux nohup-kommandoen, fra dens syntaks og muligheder til praktiske eksempler og fejlfinding af almindelige fejl.

Forstå Linux nohup Syntax

Nohup-kommandoen er nem at bruge og ligetil. Det giver dig mulighed for at køre kommandoer eller scripts i baggrunden, så du er sikker på, at de fortsætter med at udføre, selv efter du logger ud af terminalen. Sådan bruger du det:

nohup [command] [arguments] &

Du bør erstatte [kommando] med den kommando eller script, du vil køre. Og [argument] er eventuelle argumenter eller muligheder, der kræves af kommandoen. De & symbol sender kommandoen til at køre i baggrunden. Lad os se et eksempel:

nohup myscript.sh &

I dette eksempel, myscript.sh er et bash-script, der vil fortsætte med at køre, selvom du lukker terminalen. Outputtet vil blive omdirigeret til en fil med navnet nohup.out som standard, medmindre du angiver en anden sti.

Udforsker nohup-muligheder

Selvom nohup-kommandoen i sig selv ikke har mange muligheder, kan det forbedre dens ydeevne at forstå, hvordan man bruger den effektivt med forskellige kommandoer og omdirigeringsteknikker. Lad os først se, hvordan vi kan få information om nohup-kommandoen:

nohup –-help 
nohup --version

Disse to kommandoer giver dig nogle nyttige oplysninger ved at vise hjælpemeddelelsen og versionen af ​​nohup.

Kørsel af en proces med nohup-kommandoen

Hvis du vil køre en proces med nohup-kommandoen, kan du følge den samme struktur, som jeg forklarede i sidste afsnit:

nohup [command]

Hvis du vil køre en proces i baggrunden, skal du blot tilføje & til slutningen af ​​din kommando.

Kørsel af flere processer i baggrunden med nohup-kommandoen

Hvad nu hvis du vil køre mere end én proces i baggrunden ved hjælp af nohup-kommandoen?

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

Erstatte [kommando A] og [kommando B] med de kommandoer, du vil køre i baggrunden. Forestil dig, at du først vil opdatere dine systempakker og derefter rydde op i unødvendige filer, og du vil gøre dette ved at bruge nohup-kommandoen:

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

I dette eksempel, nohup tillader både opdaterings- og oprydningsprocesserne at fortsætte med at køre i baggrunden. Så dine systemvedligeholdelsesopgaver afsluttes uden at du behøver at holde terminalen åben.

Omdirigering af det brugerdefinerede output

Outputtet fra denne proces vil blive omdirigeret til nohup.out som standard. Men hvad hvis du vil modtage output på en anden vej? Sådan kan du gøre det:

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

Husk at erstatte værdierne i [] med din ønskede kommando og filsti.

Kombinerer nohup med andre kommandoer

nohup kan kombineres med andre kommandoer og pipes for at skabe kraftfulde kommandokæder. Lad os se et eksempel på dette:

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

Her, den finde kommando bruges til at søge efter logfiler og grep bruges til at søge efter udtrykket "FEJL". Det kombinerede output omdirigeres til error_logs.txt.

I dette afsnit dækkede vi de mest almindelige muligheder og brugstilfælde af nohup-kommandoen. Ved at mestre disse instruktioner kan du effektivt bruge nohup til at køre Linux-processer i baggrunden.

Almindelige fejl og fejlfinding

Brug af nohup-kommandoen er generelt ligetil, men du kan komme ud for nogle almindelige fejl under processen. At forstå disse fejl og vide, hvordan man fejlfinder dem, kan spare dig for tid og frustration. Så lad os se, hvad disse almindelige fejl er, og hvordan man navigerer i dem:

Tilladelse nægtet

Denne fejl opstår, når scriptet eller kommandoen, du prøver at køre, ikke har udførelsestilladelsen. Outputtet af fejlen ser således ud: nohup: kunne ikke køre kommandoen 'myscript.sh': Tilladelse nægtet

For at løse dette problem skal du sikre dig, at scriptet eller kommandoen har de korrekte tilladelser. Du kan tilføje udførelsestilladelse ved hjælp af chmod kommando:

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

Kommando ikke fundet

Denne fejl opstår, hvis kommandoen eller scriptet ikke findes på den angivne placering eller ikke er tilgængelig i din PATH. Outputtet af fejlen ser således ud: nohup: kunne ikke køre kommandoen 'myscript.sh': Ingen sådan fil eller mappe

For at løse denne fejl skal du kontrollere, at kommandoen eller scriptet findes og er i den korrekte mappe. Du skal muligvis angive den absolutte sti til scriptet:

nohup /path/to/myscript.sh &

Sørg også for, at kommandoen er installeret og tilgængelig i din PATH.

Ingen output

Nogle gange kan du bemærke, at der ikke er noget output i terminalen eller i outputfilen. Hvis kommandoen producerer output, men du ikke kan se den, kan den blive omdirigeret i en anden sti end standardfilen, eller der kan være et problem med filtilladelser. For at løse dette problem skal du specificere outputfilen eksplicit for at sikre, at den omdirigeres korrekt:

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

Som et eksempel omdirigerer denne kommando både standardoutput og standardfejl til en fil med navnet output.log.

Script kører ikke i baggrunden

Nogle gange ser dit script eller kommando ud til at køre, men ikke i baggrunden. Årsagen er som regel simpel. Du har måske glemt at tilføje & symbol i slutningen af ​​kommandoen for at køre den i baggrunden. Løsningen er også enkel, bare sørg for, at du har tilføjet det, og du er godt i gang.

Hængende eller ikke-reagerende proces

En proces, der er startet med nohup, kan blive hængende eller ikke reagere. Dette kan ske, hvis processen venter på input, eller hvis der er problemer med de ressourcer, den forsøger at få adgang til. Der er to løsninger på dette problem:

  • Tjek for påkrævet input: Sørg for, at kommandoen ikke kræver noget interaktivt input.
  • Ressourceproblemer: Bekræft, at kommandoen har adgang til nødvendige ressourcer (f.eks. filer, netværk).

Overskriver nohup.out

Hvis du kører flere processer i baggrunden ved hjælp af nohup-kommandoen, kan du utilsigtet overskrive nohup.out fil. For at undgå dette problem kan du vælge en specifik sti for hver proces. På denne måde har hver proces sin unikke outputfil, og standardstien overskrives ikke.

Ved at lære om den almindelige nohup-fejl og deres løsninger kan du bruge nohup-kommandoen uden problemer.

Konklusion

Nohup-kommandoen er et fantastisk værktøj for enhver Linux-bruger, der har brug for at køre processer i baggrunden, fordi den sørger for, at dine processer fortsætter med at køre, selv efter at du er logget ud. I denne vejledning dækkede vi den grundlæggende syntaks, undersøgte forskellige muligheder og diskuterede almindelige fejl sammen med fejlfindingstip. At mestre nohup-kommandoen giver dig mulighed for at administrere langvarige opgaver effektivt, hvilket forbedrer din produktivitet og systemstyringsevner.

Hvis du er en Linux-udvikler, der ønsker at maksimere din Linux-oplevelse, kan du overveje at opgradere til en pålidelig Linux VPS. Vores cloud-baserede VPS-tjeneste tilbyder 24/7 support og en 99,95% oppetidsgaranti, hvilket betyder, at dine applikationer kører problemfrit til enhver tid, og du kan få hjælp på ethvert tidspunkt af dagen. Med robust infrastruktur og pålidelige ressourcer er vores VPS designet til at opfylde kravene fra Linux-programmører. Plus, du kan have din foretrukne Linux-distribution forudinstalleret, hvilket gør opsætningen hurtig og nem. Tag dine Linux-projekter til næste niveau med en VPS, der giver den kraft og fleksibilitet, du har brug for.

FAQ

Hvad er forskellen mellem nohup og &?

nohup forhindrer en proces i at blive afsluttet, når brugeren logger ud, mens & kører en proces i baggrunden. Bruger nohup sikrer, at processen fortsætter efter logout, og kombinerer den med & tillader det at køre i baggrunden.

Hvorfor bruges nohup?

nohup bruges til at sikre, at en kommando eller et script fortsætter med at køre, selv efter at brugeren logger ud eller terminalen er lukket. Det er afgørende for langvarige processer, der skal forblive aktive uden brugerindblanding.

Hvad er nohup out-fil?

De nohup.out fil er standardoutputfilen, hvor nohup omdirigerer standardoutputtet og standardfejlen for en kommando. Hvis ingen anden outputfil er angivet, gemmes kommandoens output i nohup.out i den aktuelle mappe.

Dele

Mere fra bloggen

Fortsæt med at læse.

Bedste selv-hostede apps, du kan køre med Cosmos Cloud-forsidebillede med app-paneler omkring et Cosmos-dashboard.
Servere & OS

Bedste selv-hostede apps, du kan køre med Cosmos Cloud: Filer, medier, adgangskoder, automatisering og mere!

Måske har du konfigureret Cosmos Cloud og vil nu se, hvilke apps der passer godt til den, eller måske har du ikke engang besluttet dig for Cosmos endnu og vil bare se, hvor godt den passer til dit arbejde.

Nick SilverNick Silver 16 min læst
Portainer vs Cosmos Cloud til styring af Docker Apps-cover med hybrid opsætningsdiagram og neon ops vs adgangsblokke.
Servere & OS

Portainer vs Cosmos Cloud: Bedst egnet til Docker App Management

Hvis du allerede kender Docker og bare vil have den renere måde at køre en voksende app-stack på, er her det korte svar på Portainer vs Cosmos Cloud. Portainer er det stærkeste valg for direc

Nick SilverNick Silver 14 min læst
Cosmos Cloud vs CasaOS vs Umbrel funktionsgrafik, der viser tre selv-hostede stier inde i en abstrakt cloud-netværksverden.
Servere & OS

Cosmos Cloud vs CasaOS vs Umbrel: Hvilken Self-Hosted Platform passer til din opsætning?

Det korte svar er, at CasaOS stadig er det nemmeste sted at begynde, Umbrel har den reneste kurerede følelse, og Cosmos Cloud giver mere mening, når du vil have strammere kontrol over domaet

Nick SilverNick Silver 11 min læst

Klar til at implementere? Fra $2,48/md.

Uafhængig sky, siden 2008. AMD EPYC, NVMe, 40 Gbps. 14 dages pengene tilbage.