Sådan køres Linux -kommandoer og scripts automatisk ved en systemstart

How Run Linux Commands



At køre apps og scripts automatisk ved opstart kan være nyttigt til automatisering af almindelige bootopgaver og begivenheder. Denne artikel vil forklare et par metoder, der kan bruges til at starte apps og scripts ved en ny genstart eller et nyt login.

Opstartsprogrammer

Ubuntu og andre GNOME -baserede distributioner leveres med et program, der ganske enkelt kaldes Startup Applications. Det kan bruges til at administrere apps og scripts, der kører på en ny systemstart eller login.







Start appen Startup Applications fra applikationsstarteren, og klik på knappen Tilføj for at tilføje en ny post.





Udfyld felterne Navn og Kommando efter dine behov, og klik derefter på knappen Tilføj for at afslutte oprettelsen af ​​en ny post. Posten oprettet på skærmbilledet herunder sender en påmindelse om at lave en sikkerhedskopi som en systemmeddelelse ved hver genstart / login. Du kan erstatte det med din egen kommando eller med hele stien til dit bash -script. Du kan også bruge enhver eksisterende systemkommando eller eksekverbare filer, der normalt findes i forskellige bin -mapper på tværs af filsystemet.





Som anført ovenfor vises en backuppåmindelse ved hver genstart.



Systemd

Systemd er en dæmon- og servicemanager, der indeholder forskellige værktøjer til at styre systemprocesser og OS -komponenter. I sin forenklede form bruges det typisk til at starte og afslutte tjenester i en ny opstartscyklus.

Systemd kan bruges til automatisk at starte en app eller køre et script på en ny boot. For at oprette den samme backuppåmindelsesmeddelelse forklaret ovenfor, skal du først oprette de nødvendige mapper og filer ved at køre kommandoerne herunder:

$mkdir -s~/.konfig/system/bruger
$nano~/.konfig/system/bruger/backup_reminder.service

Erstat nano med kommandoen over din foretrukne teksteditor. Erstat backup_reminder med ethvert andet navn, du foretrækker.

Indsæt nedenstående kode i backup_reminder.service -filen, der er oprettet ved hjælp af kommandoen ovenfor.

[Enhed]
Beskrivelse = Sender en backuppåmindelse ved hver genstart
PartOf = graphical-session.target

[Service]
ExecStart = bash -c 'søvn 10; notify-send 'Lav en sikkerhedskopi' '
Type = oneshot

[Installere]
WantedBy = grafisk- session.target

Koden ovenfor er ret ligetil. Den sender en underretning om at lave en sikkerhedskopi 10 sekunder efter, at den grafiske session er indlæst (én gang hver genstart eller login).

Kør kommandoerne herunder for at aktivere tjenesten, så den automatisk kan køre ved hver genstart.

$chmod 644~/.konfig/system/bruger/backup_reminder.service
$ systemctl--bruger aktiverebackup_reminder.service
$ systemctl--brugerdæmon-genindlæsning
$ genstart

Dette er kun et enkelt eksempel på at køre en grundlæggende kommando på boot ved hjælp af systemd. Du kan også oprette avancerede tjenester med flere betingelser og flere kommandoer. For mere information henvises til systemd man side ved at køre kommandoen herunder:

$mandsystem

Bemærk, at dette eksempel forklarer oprettelse af en ny service, der ikke kræver root-adgang og er velegnet til automatisk startende apps, der ikke kræver root-tilladelser. Hvis du vil starte scripts, der kræver root-adgang, automatisk, skal du oprette en ny systemd-tjeneste i/etc/systemd/systemmappe i stedet for ~/.config/systemd/brugermappe og udelade –brugerkontakt i ovenstående kommandoer.

Cron Job

Cron er et værktøj, der periodisk kan køre planlagte opgaver i henhold til de betingelser, der er angivet af en bruger. Disse planlagte job oprettes i Crontab i et foruddefineret format. Enkelt sagt fortæller Crontab Cron, hvilke job der skal køres på hvilket tidspunkt.

Ligesom systemd kan crontab -job bruges til at starte apps og køre scripts automatisk ved opstart. For at tilføje et nyt cron -job skal du køre kommandoen herunder:

$crontab-Og

Tilføj følgende linjer i slutningen af ​​tekstfilen (starter automatisk GNOME -terminal ved hver genstart):

SHELL =/bin/bash
@reboot sleep 30 && DISPLAY =: 0 gnome-terminal

Du kan bruge din egen kommando eller levere fuld sti til et shell -script.

Bemærk, at cron i modsætning til systemd ikke kan registrere, om en grafisk session er blevet indlæst eller ej. Du skal angive en estimeret ventetid, indtil X -serveren indlæses og et visnings -id. Du kan vide om dit display -id ved at køre kommandoen herunder:

$smed ud $ DISPLAY

Forsinkelsen før udførelse af kommando eller script afhænger af din systemkonfiguration og opstartstid.

Rc.local

En anden metode til at køre scripts og kommandoer ved opstart er at bruge rc.local -fil. Bemærk, at jeg i min test ikke var i stand til at udsætte scriptkørsel, før den grafiske session var live. Tilføjelse af søvnforsinkelse fører til forsinkelse i visningen af ​​selve loginskærmen. På grund af dette havde jeg ingen succes med at køre grafiske apps ved opstart ved hjælp af rc.local -fil. Redigering af rc.local kræver også root -adgang, i modsætning til alle andre eksempler forklaret ovenfor.

Hvis du vil tilføje kommandoer / scripts til rc.local -filen, skal du køre kommandoen herunder (opretter en ny rc.local -fil, hvis den ikke findes):

$sudo nano /etc/rc.local

Tilføj dine kommandoer mellem #! /bin/bash og afslut 0 linjer, som vist herunder:

#! /bin/bash
sti/til/my_script.sh
afslut 0

Gør rc.local -filen eksekverbar ved at køre kommandoen herunder:

$sudo chmod+ x/etc/rc.local

Genstart bare, så opstartsscriptet får virkning.

Konklusion

Dette er et par metoder, der kan bruges til automatisk at køre scripts og apps ved opstart. Hvis du ønsker at køre scripts, der ikke kræver root -adgang, vil jeg anbefale at bruge Startup Applications GUI -app. Hvis du vil køre apps og scripts med root -adgang, vil jeg foreslå dig at oprette en systemd -service på systemniveau.

Om forfatteren

Nitesh Kumar

Jeg er freelancer softwareudvikler og indholdsforfatter, der elsker Linux, open source -software og gratis softwarefællesskab.

Se alle indlæg