Välkända tjänster i Linux kan läggas till vid uppstart utan problem, eftersom de flesta av dem har ett eget skript, vilket görs med hjälp av kommandona ”chkconfig” och ”systemctl”.
För att till exempel lägga till tjänsten ”Apache httpd” vid uppstart kör du ett av följande kommandon baserat på din systemhanterare. På samma sätt kan du lägga till vilken välkänd tjänst som helst vid uppstart som krävs.
För Sys V init system:
# chkconfig --level 35 httpd on
För systemd system:
# systemctl enable httpd
Ibland kan det hända att du behöver lägga till ett anpassat skript eller ett eget kommando eller en egen tjänst vid uppstart/start. Om så är fallet, hur gör du det?
I den här artikeln ska vi förstå hur du använder följande tre metoder för att implementera det:
- Användning av /etc/rc.d/rc.local-fil
- Användning av crontab-fil
- systemd-tjänstenhet
Metod-1: Använda /etc/rc.d/rc.local-fil
Den ”/etc/rc.local”-filen körs traditionellt efter att alla normala datortjänster har startats i slutet av processen för att växla till en körnivå för flera användare.
Denna metod fungerar även på systemd-systemet, och du måste lägga till platsen för ditt skript i filen ”/etc/rc.d/rc.local” för att köras vid uppstart.
Säkerställ att filen har körningsbehörighet för att köras.
# chmod +x /etc/rc.d/rc.local
För att förstå detta i detalj kommer vi att skapa ett enkelt skript enligt nedan, men du kan skapa vilket skript som helst efter behov:
# vi /opt/scripts/run-script-on-boot.sh#!/bin/bashdate > /root/on-boot-output.txthostname > /root/on-boot-output.txt
När skriptet är klart ställer du in behörigheten för körning enligt nedan:
# chmod +x /opt/scripts/run-script-on-boot.sh
För att slutligen lägga till skriptet längst ner i filen:
# vi /etc/rc.d/rc.local/opt/scripts/run-script-on-boot.sh
Starta om systemet för att verifiera detta:
# reboot
Metod-2: Användning av crontab-fil
cron utför schemalagda jobb automatiskt i backend vid en viss tidpunkt.
Detta kan enkelt åstadkommas genom att använda en särskild sträng som heter "@reboot"
med cron-jobbet.
@reboot är en särskild sträng och gör det möjligt för användaren att köra vilket kommando eller skript som helst vid uppstart (starttid).
Detta exempel kör filen ”/opt/scripts/run-script-on-boot.sh” vid omstart av systemet.
Vi kommer att använda samma skript som skapades i exemplet ovan. Lägg därför bara till följande post i crontab-filen:
# crontab -e@reboot /opt/scripts/run-script-on-boot.sh
Starta om systemet för att kontrollera detta:
# reboot
Metod-3: Använda systemd-tjänstenheten
Den här metoden fungerar bara på systemd-systemet och är mycket enkel.
För att göra det måste du skapa ett startskript för systemd och placera det i katalogen ”/etc/systemd/system/”.
Detta är vårt exempel på ett enhetsskript för systemd-start:
# 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 placerat enhetsskriptet på systemd-platsen kör du följande kommando för att uppdatera systemd-konfigurationsfilerna och aktivera tjänsten:
# systemctl daemon-reload# systemctl enable sample-on-boot-script.service
Starta om systemet för att kontrollera detta:
# reboot
Bonustips:
Om du vill köra ett skript i bakgrunden måste du lägga till den avslutande ampersand-symbolen "&"
.
/Path/To/My_Script &
Om du vill köra kommandot som en annan användare använder du följande format:
su - $USER -c /Path/To/My_Script
Slutsats
Denna handledning diskuterar kortfattat hur du lägger till ett anpassat skript eller ett eget kommando eller en egen tjänst vid start.