Linux-opdrachten

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

Linux-opdrachten en -scripts automatisch uitvoeren bij het opnieuw opstarten van het systeem
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 eenvoudigweg "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 app "Opstarttoepassingen" vanuit het startprogramma voor toepassingen en klik op de knop "Toevoegen" om een ​​nieuw item toe te voegen.

Vul de velden "Naam" en "Opdracht" 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 "Maak 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 over 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 opstart. 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/systemd/gebruiker
$ nano ~/.config/systemd/user/backup_reminder.onderhoud

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

Plak de onderstaande code in de backup_reminder.servicebestand gemaakt met de bovenstaande opdracht command.

[Eenheid]
Description=Stuurt een back-upherinnering bij elke herstart
PartOf=grafische-sessie.doelwit
[Onderhoud]
ExecStart=bash -c 'slaap 10; informeren-verzenden "Maak een back-up"'
Type=oneshot
[Installeren]
WantedBy=grafische-sessie.doelwit

De bovenstaande code is vrij eenvoudig. Het stuurt een melding "Maak een back-up" 10 seconden nadat de grafische sessie is geladen (eenmaal elke herstart of login).

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

$ chmod 644 ~/.config/systemd/user/backup_reminder.onderhoud
$ systemctl --gebruiker backup_reminder inschakelen.onderhoud
$ systemctl --user daemon-reload
$ 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:

$ man systeem

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 u automatisch scripts wilt starten die root-toegang vereisen, moet u een nieuwe systemd-service maken in de map "/etc/systemd/system" in plaats van "~/.config/systemd/user” map en laat de schakelaar “-user” weg in de hierboven genoemde opdrachten.

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 -e

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:

$ echo $DISPLAY

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

Rc.lokaal

Een andere methode om scripts en opdrachten bij het opstarten uit te voeren, is door "rc" te gebruiken.lokaal” bestand. 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 rc.lokaal bestand. rc . bewerken.local vereist ook root-toegang, in tegenstelling tot alle andere voorbeelden die hierboven zijn uitgelegd.

Commando's / scripts toevoegen aan rc.local bestand, voer de onderstaande opdracht uit (maakt een nieuwe rc.lokaal bestand als het niet bestaat):

$ sudo nano /etc/rc.lokaal

Voeg uw commando's toe tussen "#! /bin/bash" en "exit 0" regels, zoals hieronder getoond:

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

rc . maken.lokaal bestand uitvoerbaar door de onderstaande opdracht uit te voeren:

$ sudo chmod +x /etc/rc.lokaal

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 je apps en scripts met root-toegang wilt uitvoeren, raad ik je aan om 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 gratis softwaregemeenschap.

Bekijk alle berichten
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...