50% rabat alle planer, begrænset periode. Fra kun $2.48/mo
8 min tilbage
Servere og OS

Sådan virker nohup-kommandoen i Linux: syntaks, use cases og eksempler

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

Hvis du er Linux udvikler, ved du vigtigheden af konsistens og pålidelighed for dine sessioner. Langvarige processer i Linux skal fortsætte selv efter, at du har logget ud af en session. Heldigvis har Linux en funktionel kommando til dette formål. Den 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 vejledning vil guide dig gennem alt, hvad du skal vide om Linux nohup kommandoen, fra dens syntaks og muligheder til praktiske eksempler og fejlfinding af almindelige fejl.

Forståelse af Linux nohup syntaks

nohup kommandoen er nem at bruge og ligetil. Den giver dig mulighed for at køre kommandoer eller scripts i baggrunden, så du er sikker på, at de fortsætter med at køre selv efter, at du logger ud af terminalen. Her er hvordan du bruger den:

nohup [command] [arguments] &

Du bør erstatte [command] med den kommando eller det script, du vil køre. Og [argument] er eventuelle argumenter eller indstillinger, som kommandoen kræver. & symbolet 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 fortsætter med at køre, selvom du lukker terminalen. Output omdirigeres som standard til en fil med navn nohup.out medmindre du angiver en anden sti.

Udforsk nohup muligheder

Selvom nohup-kommandoen selv ikke har mange indstillinger, kan forståelse af, hvordan man bruger den effektivt sammen med forskellige kommandoer og omdirigeringstekniker, forbedre dens funktion. Først skal vi se, hvordan vi kan få information om nohup-kommandoen:

nohup –-help 
nohup --version

Disse to kommandoer giver dig nyttig information ved at vise hjælpebeskeden 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 forrige 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

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

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

Udskift [command A] og [command B] med de kommandoer, du vil køre i baggrunden. Forestil dig, at du først vil opdatere dine systempakker og derefter rydde op med unødvendige filer, og du vil gøre dette ved hjælp af 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 gennemføres uden, at du skal holde terminalen åben.

Omdirigering af det brugerdefinerede output

Output fra denne proces omdirigeres til nohup.out som standard. Men hvad hvis du vil modtage output på en anden sti? Her er, hvordan du gør det:

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

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

Kombination af nohup med andre kommandoer

nohup kan kombineres med andre kommandoer og pipes til 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 find kommandoen bruges til at søge efter logfiler, og grep bruges til at søge efter udtrykket "ERROR". Det kombinerede output omdirigeres til error_logs.txt.

I dette afsnit dækkede vi de mest almindelige indstillinger og use cases for 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 møde nogle almindelige fejl under processen. Forståelse af disse fejl og kendskab til, hvordan man fejlfinder dem, kan spare dig tid og frustration. Lad os altså se, hvad disse almindelige fejl er, og hvordan man håndterer dem:

Adgang nægtet

Denne fejl opstår, når det script eller den kommando, du forsøger at køre, ikke har køretilladelse. Output fra fejlen ser sådan ud: nohup: failed to run command 'myscript.sh': Permission denied

For at løse dette problem skal du sørge for, at scriptet eller kommandoen har de korrekte tilladelser. Du kan tilføje køretilladelse 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å det angivne sted eller ikke er tilgængelig i din PATH. Fejloutputtet ser således ud: nohup: failed to run command 'myscript.sh': No such file or directory

For at løse denne fejl skal du bekræfte, at kommandoen eller scriptet findes og er i den korrekte mappe. Du skal muligvis angive den fulde 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 få bemærket, at der ikke er noget output i terminalen eller i outputfilen. Hvis kommandoen producerer output, men du ikke ser det, kan det være omdirigeret til en anden sti end standardfilen, eller der kan være et problem med filtilladelser. For at løse dette problem skal du eksplicit angive outputfilen for at sikre, at den omdirigeres korrekt:

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

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

Script kører ikke i baggrunden

Nogle gange ser dit script eller din kommando ud til at køre, men ikke i baggrunden. Årsagen er normalt simpel. Du kan have glemt at tilføje & symbolet i slutningen af kommandoen for at køre den i baggrunden. Løsningen er lige så simpel - sørg bare for, at du har tilføjet det, og så er du klar.

Hængende eller responsiv proces

En proces startet med nohup kan blive hængende eller blive uresponsiv. 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:

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

Overskrivning af nohup.out

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

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

Konklusion

Nohup-kommandoen er et glimrende værktøj for enhver Linux-bruger, der har brug for at køre processer i baggrunden, fordi den sikrer, at dine processer fortsætter med at køre selv efter, at du er logget ud. I denne guide har vi dækket grundlæggende syntaks, udforsket forskellige muligheder og diskuteret almindelige fejl sammen med fejlfindingstips. Når du mestrer nohup-kommandoen, kan du administrere længerevarende opgaver effektivt, hvilket forbedrer din produktivitet og systemstyringsevner.

Hvis du er en Linux-udvikler, der gerne vil 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 garanteret oppetid på 99,95%, hvilket betyder, at dine applikationer kører problemfrit hele tiden, og du kan få hjælp når som helst på dagen. Med robust infrastruktur og pålidelige ressourcer er vores VPS designet til at opfylde kravene fra Linux-programmører. Du kan desuden få din foretrukne Linux-distribution forinstalleret, hvilket gør opsætningen hurtig og nem. Bring dine Linux-projekter til næste niveau med en VPS, der giver den kraft og fleksibilitet, du har brug for.

Ofte stillede spørgsmål

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. Brug af nohup sikrer, at processen fortsætter efter logout, og kombinering med & gør det muligt for den at køre i baggrunden.

Hvorfor bruges nohup?

nohup bruges til at sikre, at en kommando eller script fortsætter med at køre selv efter, at brugeren logger ud eller terminalen lukkes. Det er vigtig for længerevarende processer, der skal forblive aktive uden brugerintervention.

Hvad er nohup out fil?

Det nohup.out filen er standardoutputfilen, hvor nohup omdirigerer standardoutput og standardfejl fra en kommando. Hvis der ikke er angivet anden outputfil, gemmes kommandoens output i nohup.out i det aktuelle katalog.

Del

Mere fra bloggen

Læs videre.

Bedste Self-Hosted Apps, du kan køre med Cosmos Cloud cover-billede med app-paneler omkring et Cosmos-dashboard.
Servere og OS

Bedste Self-Hosted Apps, du kan køre med Cosmos Cloud: Filer, Media, Adgangskoder, Automatisering og mere!

Maybe har du sat Cosmos Cloud op og vil gerne se, hvilke apps der passer godt sammen med det, eller måske har du slet ikke besluttet dig for Cosmos endnu og vil bare se, hvor godt det passer til dit workflow

Nick SølvNick Sølv 16 min læsning
Portainer vs Cosmos Cloud til administration af Docker apps cover med hybrid setup-diagram og neon ops vs access blocks.
Servere og OS

Portainer vs Cosmos Cloud: Det bedste valg til Docker app-administration

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

Nick SølvNick Sølv 14 min læsning
Cosmos Cloud vs CasaOS vs Umbrel feature-grafik, der viser tre self-hosted-veje inden for en abstrakt cloud-netværksverden.
Servere og OS

Cosmos Cloud vs CasaOS vs Umbrel: Hvilken Self-Hosted-platform passer til dit setup?

Det korte svar er, at CasaOS stadig er det nemmeste sted at begynde, Umbrel har det reneste kurerede udtryk, og Cosmos Cloud giver mere mening, når du ønsker tættere kontrol over doma

Nick SølvNick Sølv 11 min læsning

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

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