Hvordan kjøre Linux -kommandoer og skript automatisk på en systemstart på en omstart

Hvordan kjøre Linux -kommandoer og skript automatisk på en systemstart på en omstart
Å kjøre apper og skript automatisk ved oppstart kan være nyttige for å automatisere vanlige oppstartoppgaver og hendelser. Denne artikkelen vil forklare noen få metoder som kan brukes til å starte apper og skript på en ny omstart eller en ny pålogging.

Oppstartsapplikasjoner

Ubuntu og andre GNOME -baserte distribusjoner kommer med en applikasjon ganske enkelt kalt "Startup Applications". Det kan brukes til å administrere apper og skript som kjører på en ny systemstart eller pålogging.

Start "Startup Applications" -appen fra applikasjonslandøtet og klikk på "Legg til" -knappen for å legge til en ny oppføring.

Fyll opp "Navnet" og "Kommando" i henhold til dine behov, og klikk deretter på "Legg til" -knappen for å fullføre å opprette en ny oppføring. Oppføringen som er opprettet i skjermbildet nedenfor, vil sende en "Make a Backup" -minn som et systemvarsel på hver omstart / pålogging. Du kan erstatte den med din egen kommando eller med full bane på bashskriptet ditt. Du kan også bruke hvilken som helst eksisterende systemkommando eller kjørbare filer som vanligvis er lokalisert i forskjellige "søppel" -mapper over filsystemet.

Som nevnt ovenfor, vises en påminnelse om sikkerhetskopiering på hver omstart.

Systemd

SystemD er en demon- og servicesjef som inneholder forskjellige verktøy for å administrere systemprosesser og OS -komponenter. I sin forenklede form brukes den vanligvis til å starte og avslutte tjenester i en ny oppstartssyklus.

SystemD kan brukes til å starte en app automatisk eller kjøre et skript på New A Boot. For å opprette den samme varselet om sikkerhetskopiering som er forklart ovenfor, må du først opprette de nødvendige mappene og filen ved å kjøre kommandoene nedenfor:

$ mkdir -p ~/.konfigurasjon/systemd/bruker
$ nano ~/.config/systemd/bruker/backup_reminder.service

Erstatte “Nano” med kommandoen over din favoritt tekstredigerer. Erstatte “backup_reminder” med noe annet navn du foretrekker.

Lim inn koden nedenfor i backup_reminder.Servicefil opprettet ved hjelp av kommandoen ovenfor.

[Enhet]
Beskrivelse = Sender en sikkerhetskopiering på hver omstart
Delof = grafisk-økt.mål
[Service]
ExecStart = bash -c 'Sleep 10; Varsle-Send "Gjør en sikkerhetskopi" '
Type = Oneshot
[Installere]
WantedBy = grafisk-økt.mål

Koden over er ganske grei. Den sender en "Make a Backup" -varsel 10 sekunder etter at den grafiske økten er lastet (når hver omstart eller pålogging).

Kjør kommandoene nedenfor for å aktivere tjenesten slik at den automatisk kan kjøre på hver omstart.

$ chmod 644 ~/.config/systemd/bruker/backup_reminder.service
$ SystemCTL -Bruker Aktiver Backup_Reminder.service
$ SystemCTL-Bruker DAEMON-RELOAD
$ omstart

Dette er bare et enkelt eksempel på å kjøre en grunnleggende kommando på oppstart ved hjelp av SystemD. Du kan også lage avanserte tjenester med flere betingelser og flere kommandoer. For mer informasjon, se SystemD Man -siden ved å kjøre kommandoen nedenfor:

$ mann systemd

Merk at dette eksemplet forklarer å opprette en ny tjeneste som ikke krever rottilgang og er egnet for automatisk starting av apper som ikke krever rootstillatelser. Hvis du vil automatisk startskript som krever rottilgang, må du opprette en ny SystemD-tjeneste i "/etc/Systemd/System" -katalogen i stedet for "~/.config/systemd/bruker ”-mappe og utelate“ -bruker ”-bryter i kommandoene nevnt ovenfor.

Cron Job

Cron er et verktøy som med jevne mellomrom kan kjøre planlagte oppgaver i henhold til betingelsene som er spesifisert av en bruker. Disse planlagte jobbene er opprettet i crontab i et forhåndsdefinert format. Enkelt sagt forteller Crontab til Cron hvilke jobber som skal kjøres på hvilket tidspunkt.

I likhet med SystemD, kan Crontab -jobber brukes til å starte apper og kjøre skript automatisk på oppstart. For å legge til en ny Cron -jobb, kjør kommandoen nedenfor:

$ crontab -e

Legg til følgende linjer på slutten av tekstfilen (starter GNOME -terminalen automatisk på hver omstart):

Shell =/bin/bash
@Reboot Sleep 30 && display =: 0 GNOME-terminal

Du kan bruke din egen kommando eller levere full vei til et skallskript.

Merk at i motsetning til SystemD, kan ikke Cron oppdage om grafisk økt er lastet eller ikke. Du må spesifisere noen estimert ventetid til X -serveren og en displayidentifikator. Du kan vite om skjerm -ID -en din ved å kjøre kommandoen nedenfor:

$ ekko $ display

Forsinkelsen før utførelse av kommando eller skript avhenger av systemkonfigurasjonen og oppstartstiden.

Rc.lokal

En annen metode for å kjøre skript og kommandoer ved oppstart er å bruke “RC.lokal ”fil. Legg merke til at jeg i min testing ikke klarte å utsette utførelse av skriptet før grafisk økt var live. Legge til enhver søvnforsinkelse fører til forsinkelse i visningen av selve påloggingsskjermen. På grunn av dette hadde jeg ingen suksess med å kjøre grafiske apper ved oppstart ved hjelp av RC.lokal fil. Redigering RC.Lokal krever også rottilgang, i motsetning til alle andre eksempler forklart ovenfor.

For å legge til kommandoer / skript til RC.Lokal fil, kjør kommandoen nedenfor (oppretter en ny RC.lokal fil hvis den ikke eksisterer):

$ sudo nano /etc /rc.lokal

Legg til kommandoene dine mellom “#! /bin/bash ”og“ exit 0 ”linjer, som vist nedenfor:

#! /bin/bash
bane/til/my_script.sh
Avslutt 0

Lag RC.Lokal fil som kjøres ved å kjøre kommandoen nedenfor:

$ sudo chmod +x /etc /rc.lokal

Bare start på nytt for at oppstartsskriptet skal tre i kraft.

Konklusjon

Dette er noen få metoder som kan brukes til å automatisk kjøre skript og apper ved oppstart. Hvis du ønsker å kjøre skript som ikke krever rottilgang, vil jeg anbefale å bruke "Startup Applications" GUI -app. Hvis du vil kjøre apper og skript med rottilgang, vil jeg foreslå at du oppretter en systemnivå SystemD -tjeneste.