Så här kör du Linux -kommandon och skript automatiskt vid en systemstart

How Run Linux Commands



Att köra appar och skript automatiskt vid start kan vara användbart för att automatisera vanliga startuppgifter och händelser. Denna artikel kommer att förklara några metoder som kan användas för att starta appar och skript vid en ny omstart eller en ny inloggning.

Startprogram

Ubuntu och andra GNOME -baserade distributioner kommer med ett program som helt enkelt kallas Startup Applications. Den kan användas för att hantera appar och skript som körs på en ny systemstart eller inloggning.







Starta appen Startup Applications från programstartaren och klicka på knappen Lägg till för att lägga till en ny post.





Fyll i namn- och kommandofälten enligt dina behov och klicka sedan på knappen Lägg till för att skapa en ny post. Posten som skapas på skärmdumpen nedan skickar en påminnelse om att göra en säkerhetskopia som ett systemmeddelande vid varje omstart / inloggning. Du kan ersätta det med ditt eget kommando eller med hela sökvägen till ditt bash -skript. Du kan också använda alla befintliga systemkommandon eller körbara filer som vanligtvis finns i olika fackmappar i filsystemet.





Som nämnts ovan visas en påminnelse om säkerhetskopiering vid varje omstart.



Systemd

Systemd är en demon- och servicechef som innehåller olika verktyg för att hantera systemprocesser och OS -komponenter. I sin förenklade form används den vanligtvis för att starta och avsluta tjänster i en ny startcykel.

Systemd kan användas för att automatiskt starta en app eller köra ett skript på en ny start. För att skapa samma meddelande om påminnelse om säkerhetskopiering som förklaras ovan måste du först skapa de nödvändiga mapparna och filen genom att köra kommandona nedan:

$mkdir -s~/.konfig/systemet/användare
$nano~/.konfig/systemet/användare/backup_reminder.service

Ersätt nano med kommandot för din favorit textredigerare. Ersätt backup_reminder med något annat namn som du föredrar.

Klistra in koden nedan i filen backup_reminder.service som skapats med kommandot ovan.

[Enhet]
Beskrivning = Skickar en påminnelse om säkerhetskopiering vid varje omstart
PartOf = graphical-session.target

[Service]
ExecStart = bash -c 'sleep 10; meddela-skicka 'Gör en säkerhetskopia'
Typ = oneshot

[Installera]
WantedBy = graphical-session.target

Koden ovan är ganska enkel. Den skickar ett meddelande om att göra en säkerhetskopia 10 sekunder efter att den grafiska sessionen har laddats (en gång varje omstart eller inloggning).

Kör kommandona nedan för att aktivera tjänsten så att den automatiskt kan köras vid varje omstart.

$chmod 644~/.konfig/systemet/användare/backup_reminder.service
$ systemctl--användare Gör det möjligtbackup_reminder.service
$ systemctl--användaredemon-reload
$ starta om

Detta är bara ett enkelt exempel på att köra ett grundläggande kommando vid start med systemd. Du kan också skapa avancerade tjänster med flera villkor och flera kommandon. För mer information, se systemd man -sidan genom att köra kommandot nedan:

$mansystemet

Observera att det här exemplet förklarar hur du skapar en ny tjänst som inte kräver root-åtkomst och är lämplig för appar som startar automatiskt och som inte kräver root-behörigheter. Om du vill starta skript som kräver root-åtkomst automatiskt måste du skapa en ny systemd-tjänst i/etc/systemd/systemkatalogen istället för ~/.config/systemd/användarmapp och utelämna –användaromkopplare i kommandona som nämns ovan.

Cron jobb

Cron är ett verktyg som regelbundet kan köra schemalagda uppgifter enligt de villkor som anges av en användare. Dessa schemalagda jobb skapas i Crontab i ett fördefinierat format. Enkelt uttryckt berättar Crontab för Cron vilka jobb som ska köras vid vilken tidpunkt.

Precis som systemd kan crontab -jobb användas för att starta appar och köra skript automatiskt vid start. För att lägga till ett nytt cron -jobb, kör kommandot nedan:

$crontab-Och

Lägg till följande rader i slutet av textfilen (startar automatiskt GNOME -terminalen vid varje omstart):

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

Du kan använda ditt eget kommando eller tillhandahålla fullständig sökväg till ett skalskript.

Observera att till skillnad från systemd kan cron inte upptäcka om grafisk session har laddats eller inte. Du måste ange en uppskattad väntetid tills X -servern laddas och en visningsidentifierare. Du kan veta om ditt visnings -ID genom att köra kommandot nedan:

$kastade ut $ DISPLAY

Fördröjningen innan körning av kommando eller skript beror på din systemkonfiguration och starttid.

Rc.local

En annan metod för att köra skript och kommandon vid start är att använda rc.local -fil. Observera att jag under min testning inte kunde skjuta upp körningen av skript förrän den grafiska sessionen var aktiv. Att lägga till sömnfördröjning leder till fördröjning i visningen av själva inloggningsskärmen. På grund av detta hade jag ingen framgång med att köra grafiska appar vid start med hjälp av rc.local -fil. Redigering av rc.local kräver också root -åtkomst, till skillnad från alla andra exempel som förklaras ovan.

För att lägga till kommandon / skript i rc.local -filen, kör kommandot nedan (skapar en ny rc.local -fil om den inte finns):

$sudo nano /etc/rc.local

Lägg till dina kommandon mellan #! /bin/bash och avsluta 0 rader, enligt nedan:

#! /bin/bash
sökväg/till/my_script.sh
avsluta 0

Gör rc.local -filen körbar genom att köra kommandot nedan:

$sudo chmod+ x/etc/rc.local

Starta bara om för att startskriptet ska träda i kraft.

Slutsats

Det här är några metoder som kan användas för att automatiskt köra skript och appar vid start. Om du vill köra skript som inte kräver root -åtkomst rekommenderar jag att du använder GUI -appen Startup Applications. Om du vill köra appar och skript med root -åtkomst, föreslår jag att du skapar en systemd -tjänst på systemnivå.

Om författaren

Nitesh Kumar

Jag är en frilansare mjukvaruutvecklare och innehållsförfattare som älskar Linux, programvara med öppen källkod och den fria programvarusamhället.

Visa alla inlägg