Linux-kommandoer

Sådan køres Linux-kommandoer og scripts automatisk ved et systemgenstart

Sådan køres Linux-kommandoer og scripts automatisk ved et systemgenstart
At køre apps og scripts automatisk ved opstart kan være nyttigt til automatisering af almindelige opstartsopgaver 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.

Startup-applikationer

Ubuntu og andre GNOME-baserede distributioner kommer med en applikation, der simpelthen kaldes "Startup Applications". Det kan bruges til at administrere apps og scripts, der kører på et nyt system-genstart eller login.

Start "Startup Applications" -appen 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 færdiggøre oprettelsen af ​​en ny post. Posten oprettet i skærmbilledet nedenfor sender en "Lav en sikkerhedskopi" -påmindelse 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 nævnt ovenfor vises en backuppåmindelse ved hver genstart.

Systemd

Systemd er en dæmon og servicemanager, der indeholder forskellige hjælpeprogrammer 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å ny en boot. For at oprette den samme besked om backuppåmindelse, der er forklaret ovenfor, skal du først oprette de nødvendige mapper og filen ved at køre nedenstående kommandoer:

$ mkdir -p ~ /.config / systemd / bruger
$ nano ~ /.config / systemd / user / backup_reminder.service

Udskift "nano" med kommando fra din yndlings teksteditor. Udskift "backup_reminder" med ethvert andet navn, du foretrækker.

Indsæt koden nedenfor i backup_reminder.servicefil oprettet ved hjælp af kommandoen ovenfor.

[Enhed]
Beskrivelse = Sender en backuppåmindelse ved hver genstart
PartOf = grafisk session.mål
[Service]
ExecStart = bash -c 'sove 10; besked-send "Lav en sikkerhedskopi" '
Type = oneshot
[Installere]
WantedBy = grafisk session.mål

Koden ovenfor er ret ligetil. Den sender en meddelelse "Opret en sikkerhedskopi" 10 sekunder efter, at den grafiske session er indlæst (en gang hver genstart eller login).

Kør nedenstående kommandoer for at aktivere tjenesten, så den automatisk kan køre ved hver genstart.

$ chmod 644 ~ /.config / systemd / user / backup_reminder.service
$ systemctl - bruger aktiverer backup_reminder.service
$ systemctl - bruger-dæmon-genindlæsning
$ genstart

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

$ mand systemd

Bemærk, at dette eksempel forklarer oprettelse af en ny tjeneste, der ikke kræver rodadgang og er egnet til automatisk start af apps, der ikke kræver rodtilladelser. Hvis du vil starte scripts, der kræver rodadgang, automatisk, skal du oprette en ny systemd-tjeneste i "/ etc / systemd / system" -mappen i stedet for "~ /.config / systemd / user ”-mappe og udelad“ -bruger ”-knappen i ovennævnte 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øre 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 nedenfor:

$ crontab -e

Tilføj følgende linjer i slutningen af ​​tekstfilen (starter automatisk GNOME-terminalen 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 i modsætning til systemd kan cron ikke registrere, om grafisk session er indlæst eller ej. Du skal angive en estimeret ventetid, indtil X-serveren indlæses, og en display-id. Du kan vide om dit display-id ved at køre kommandoen nedenfor:

$ echo $ DISPLAY

Forsinkelsen inden udførelse af kommando eller script afhænger af din systemkonfiguration og starttid.

Rc.lokal

En anden metode til at køre scripts og kommandoer ved opstart er at bruge “rc.lokal ”fil. Bemærk, at jeg under min test ikke var i stand til at udskyde scriptudførelse, 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.lokal fil. Redigering af rc.lokalt kræver også rodadgang i modsætning til alle andre eksempler, der er forklaret ovenfor.

For at tilføje kommandoer / scripts til rc.lokal fil, kør kommandoen nedenfor (opretter en ny rc.lokal fil, hvis den ikke findes):

$ sudo nano / etc / rc.lokal

Tilføj dine kommandoer mellem “#! / bin / bash ”og“ exit 0 ”linjer, som vist nedenfor:

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

Lav rc.lokal fil eksekverbar ved at køre kommandoen nedenfor:

$ sudo chmod + x / etc / rc.lokal

Genstart bare for opstartsskriptet for at træde i kraft.

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 rootadgang, vil jeg anbefale at bruge "Startup Applications" GUI-appen. Hvis du vil køre apps og scripts med rootadgang, 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 det fri softwarefællesskab.

Vis alle indlæg
HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...
Sådan bruges AutoKey til at automatisere Linux-spil
AutoKey er et desktopautomatiseringsværktøj til Linux og X11, programmeret i Python 3, GTK og Qt. Ved hjælp af dets scripting og MACRO-funktionalitet ...
Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...