Velkendte tjenester i Linux kan uden problemer tilføjes ved opstart, fordi de fleste af dem kommer med deres eget script, hvilket gøres ved hjælp af kommandoerne “chkconfig” og “systemctl”.
For eksempel skal du for at tilføje tjenesten ‘Apache httpd’ ved opstart køre en af følgende kommandoer baseret på din systemadministrator. På samme måde kan du tilføje enhver velkendt tjeneste efter behov ved opstart.
For Sys V init system:
# chkconfig --level 35 httpd on
For systemd system:
# systemctl enable httpd
I nogle tilfælde kan du have brug for at tilføje et brugerdefineret script eller en brugerdefineret kommando eller tjeneste ved opstart/boot. Hvis det er tilfældet, hvordan gør du det?
I denne artikel skal vi forstå, hvordan du kan bruge følgende tre metoder til at implementere det:
- Vejledning af /etc/rc.d/rc.local-fil
- systemd-tjenesteenhed
Brug af crontab-fil
Metode-1: Brug af /etc/rc.d/rc.local-fil
Den “/etc/rc.local”-filen udføres traditionelt efter at alle normale computertjenester er blevet startet i slutningen af processen med at skifte til et flerbrugerkørselsniveau.
Denne metode fungerer også på systemd-systemet, og du skal tilføje placeringen af dit script til filen “/etc/rc.d/rc.local”, som skal køres ved opstart.
Sørg for, at filen har eksekveringstilladelse til at køre.
# chmod +x /etc/rc.d/rc.local
For at forstå dette i detaljer vil vi oprette et simpelt script som vist nedenfor, men du kan oprette et hvilket som helst script efter behov:
# vi /opt/scripts/run-script-on-boot.sh#!/bin/bashdate > /root/on-boot-output.txthostname > /root/on-boot-output.txt
Når scriptet er klar, skal du indstille den eksekverbare tilladelse som vist nedenfor:
# chmod +x /opt/scripts/run-script-on-boot.sh
Finalt tilføjes scriptet nederst i filen:
# vi /etc/rc.d/rc.local/opt/scripts/run-script-on-boot.sh
Genstart dit system for at verificere dette:
# reboot
Metode-2: Brug af crontab-fil
cron udfører planlagte job automatisk i backend’en på et bestemt tidspunkt.
Dette kan nemt lade sig gøre ved hjælp af en særlig streng kaldet "@reboot"
med cronjob.
@reboot er en særlig streng og giver brugeren mulighed for at køre en hvilken som helst kommando eller et script ved opstart (opstartstidspunktet).
Dette eksempel kører filen ‘/opt/scripts/run-script-on-boot.sh’ ved genstart af systemet.
Vi vil bruge det samme script, som blev oprettet i ovenstående eksempel. For at gøre det skal du blot tilføje følgende post i crontab-filen:
# crontab -e@reboot /opt/scripts/run-script-on-boot.sh
Start systemet igen for at kontrollere dette:
# reboot
Metode-3: Brug af systemd-serviceenhed
Denne metode virker kun på systemd-systemet, og den er meget ligetil.
For at gøre det skal du oprette et systemd-opstartsscript og placere det i mappen “/etc/systemd/system/”.
Dette er vores eksempel på et enhedsscript til systemd-opstart:
# vi sample-on-boot-script.serviceDescription=Run a Custom Script at StartupAfter=default.targetExecStart=/opt/scripts/run-script-on-boot.shWantedBy=default.target
Når du har placeret enhedsscriptet i systemd-placeringen, skal du køre følgende kommando for at opdatere systemd-konfigurationsfilerne og aktivere tjenesten:
# systemctl daemon-reload# systemctl enable sample-on-boot-script.service
Genstart dit system for at kontrollere dette:
# reboot
Bonus Tips:
Hvis du vil køre et script i baggrunden, skal du tilføje det afsluttende ampersand "&"
-symbol.
/Path/To/My_Script &
Hvis du vil køre kommandoen som en anden bruger, skal du bruge følgende format:
su - $USER -c /Path/To/My_Script
Konklusion
Denne vejledning beskriver kort, hvordan du tilføjer et brugerdefineret script eller en brugerdefineret kommando eller tjeneste ved opstart.