Linux-opdrachten en -scripts automatisch uitvoeren bij het opnieuw opstarten van het systeem

How Run Linux Commands



Het automatisch uitvoeren van apps en scripts bij het opstarten kan handig zijn voor het automatiseren van veelvoorkomende opstarttaken en -gebeurtenissen. In dit artikel worden enkele methoden uitgelegd die kunnen worden gebruikt voor het starten van apps en scripts bij een nieuwe herstart of een nieuwe login.

Opstarttoepassingen

Ubuntu en andere op GNOME gebaseerde distributies worden geleverd met een applicatie die simpelweg Startup Applications wordt genoemd. Het kan worden gebruikt voor het beheren van apps en scripts die worden uitgevoerd bij een nieuwe herstart of aanmelding van het systeem.







Start de Startup Applications-app vanuit de applicatiestarter en klik op de knop Toevoegen om een ​​nieuw item toe te voegen.





Vul de velden Naam en Commando in volgens uw behoeften en klik vervolgens op de knop Toevoegen om het maken van een nieuw item te voltooien. Het item dat in de onderstaande schermafbeelding is gemaakt, stuurt een herinnering voor het maken van een back-up als systeemmelding bij elke herstart / aanmelding. Je kunt het vervangen door je eigen commando of met het volledige pad van je bash-script. U kunt ook alle bestaande systeemopdrachten of uitvoerbare bestanden gebruiken die zich gewoonlijk in verschillende bin-mappen in het bestandssysteem bevinden.





Zoals hierboven vermeld, wordt er bij elke herstart een back-upherinnering weergegeven.



Systemd

Systemd is een daemon en servicemanager die verschillende hulpprogramma's bevat om systeemprocessen en OS-componenten te beheren. In zijn simplistische vorm wordt het meestal gebruikt om services te starten en te beëindigen in een nieuwe opstartcyclus.

Systemd kan worden gebruikt om automatisch een app te starten of een script uit te voeren bij een nieuwe start. Om dezelfde back-upherinneringsmelding te maken die hierboven is uitgelegd, moet u eerst de vereiste mappen en bestanden maken door de onderstaande opdrachten uit te voeren:

$mkdir -P~/.config/systeem/gebruiker
$nano~/.config/systeem/gebruiker/backup_reminder.service

Vervang nano door het commando van je favoriete teksteditor. Vervang backup_reminder door een andere naam die u verkiest.

Plak de onderstaande code in het bestand backup_reminder.service dat is gemaakt met de bovenstaande opdracht.

[Eenheid]
Description=Stuurt een back-upherinnering bij elke herstart
PartOf=grafisch-sessie.doel

[Onderhoud]
ExecStart=bash -c 'slaap 10; verwittigen-verzenden 'Maak een back-up''
Type=oneshot

[Installeren]
WantedBy=grafisch-sessie.doel

De bovenstaande code is vrij eenvoudig. Het stuurt 10 seconden nadat de grafische sessie is geladen een melding voor het maken van een back-up (eenmaal per herstart of login).

Voer de onderstaande opdrachten uit om de service in te schakelen, zodat deze bij elke herstart automatisch kan worden uitgevoerd.

$chmod 644~/.config/systeem/gebruiker/backup_reminder.service
$ systeemctl--gebruiker inschakelenbackup_reminder.service
$ systeemctl--gebruikerdaemon-herladen
$ opnieuw opstarten

Dit is slechts een eenvoudig voorbeeld van het uitvoeren van een basiscommando bij het opstarten met systemd. U kunt ook geavanceerde services maken met meerdere voorwaarden en meerdere opdrachten. Raadpleeg voor meer informatie de man-pagina van systemd door de onderstaande opdracht uit te voeren:

$Menssysteem

Merk op dat in dit voorbeeld het maken van een nieuwe service wordt uitgelegd die geen root-toegang vereist en geschikt is voor het automatisch starten van apps waarvoor geen root-machtigingen nodig zijn. Als je automatisch scripts wilt starten waarvoor root-toegang nodig is, moet je een nieuwe systemd-service maken in de map /etc/systemd/system in plaats van de map ~/.config/systemd/user en –user switch weglaten in de hierboven genoemde commando's.

Cron-job

Cron is een tool die periodiek geplande taken kan uitvoeren volgens de voorwaarden die door een gebruiker zijn gespecificeerd. Deze geplande taken worden in Crontab aangemaakt in een vooraf gedefinieerd formaat. In eenvoudige bewoordingen vertelt Crontab Cron welke taken op welk moment moeten worden uitgevoerd.

Net als systemd kunnen crontab-taken worden gebruikt om apps te starten en scripts automatisch uit te voeren bij het opstarten. Voer de onderstaande opdracht uit om een ​​nieuwe cron-taak toe te voegen:

$crontab-En

Voeg de volgende regels toe aan het einde van het tekstbestand (start automatisch de GNOME-terminal bij elke herstart):

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

U kunt uw eigen opdracht gebruiken of het volledige pad naar een shellscript opgeven.

Merk op dat cron, in tegenstelling tot systemd, niet kan detecteren of een grafische sessie is geladen of niet. U moet een geschatte wachttijd opgeven totdat de X-server wordt geladen en een weergave-ID opgeven. U kunt meer te weten komen over uw weergave-ID door de onderstaande opdracht uit te voeren:

$gooide uit $DISPLAY

De vertraging voordat een opdracht of script wordt uitgevoerd, is afhankelijk van uw systeemconfiguratie en opstarttijd.

lokaal

Een andere methode om scripts en opdrachten bij het opstarten uit te voeren, is door het rc.local-bestand te gebruiken. Merk op dat ik tijdens mijn testen de uitvoering van het script niet kon uitstellen tot de grafische sessie live was. Het toevoegen van een slaapvertraging leidde tot vertraging bij het weergeven van het inlogscherm zelf. Hierdoor had ik geen succes bij het uitvoeren van grafische apps bij het opstarten met behulp van het rc.local-bestand. Het bewerken van rc.local vereist ook root-toegang, in tegenstelling tot alle andere voorbeelden die hierboven zijn uitgelegd.

Voer de onderstaande opdracht uit om opdrachten / scripts aan het rc.local-bestand toe te voegen (maakt een nieuw rc.local-bestand als het nog niet bestaat):

$sudo nano /enzovoort/rc.local

Voeg je commando's toe tussen #! /bin/bash en verlaat 0 regels, zoals hieronder getoond:

#! /bin/bash
pad/naar/mijn_script.sh
uitgang 0

Maak het rc.local-bestand uitvoerbaar door de onderstaande opdracht uit te voeren:

$sudo chmod+ x/enzovoort/rc.local

Start gewoon opnieuw op om het opstartscript van kracht te laten worden.

Conclusie

Dit zijn een paar methoden die kunnen worden gebruikt om automatisch scripts en apps uit te voeren bij het opstarten. Als u scripts wilt uitvoeren waarvoor geen root-toegang nodig is, raad ik u aan de GUI-app Startup Applications te gebruiken. Als u apps en scripts met root-toegang wilt uitvoeren, raad ik u aan een systemd-service op systeemniveau te maken.

Over de auteur

Nitesh Kumar

Ik ben een freelancer softwareontwikkelaar en inhoudschrijver die dol is op Linux, open source software en de vrije softwaregemeenschap.

Bekijk alle berichten