GNU/Linux >> Znalost Linux >  >> Debian

Jak spustit skript při spouštění v Debianu 11

Zavedení zjednodušeně řečeno označuje čas od zapnutí do okamžiku spuštění uživatelem. Toho je dosaženo pomocí spouštěcího skriptu, který obsahuje pokyny, který kód se má načíst a které procesy a aplikace spustit.

Existuje několik fází spouštění Linuxu (před zavedením do systemd nebo System V init a před načtením desktopového prostředí) a můžete si nakonfigurovat svůj vlastní skript nebo program pro automatické spuštění v jakékoli dané fázi, kdy to může být jeden příkaz nebo spíše série příkazů nebo spustitelný shell skript. Nicméně je informativní poznamenat, že mezi různými distribucemi a verzemi Linuxu mohou existovat určité rozdíly v postupu spouštění.

Moderní verze Linuxu se nejprve zavedou do systemd zatímco starší verze využívají Init System V . Obě metody spustí cron arc.local před načtením desktopových prostředí jako KDE nebo GNOME. Na druhou stranu serverová linuxová distribuce spouští výchozí prostředí, například Bash, poté, co se uživatel přihlásí na konzoli namísto načtení desktopového prostředí.

Chcete-li vhodně přidat služby a skripty při spuštění v Debianu 11, musíte vytvořit jednotky Systemd. Tato příručka se zaměří na tři způsoby přidávání skriptů při spuštění na vašem počítači Debian 11:

  1. Pomocí systemd
  2. Pomocí cronu
  3. Pomocí rc.local

Pojďme začít.

Co je to systémová jednotka?

Jednotky Systemd jsou konfigurační soubory obsahující informace pro vhodnou správu nebo provádění určitých systémových souborů. V systemd jednotka označuje jakýkoli zdroj, se kterým systém ví, jak pracovat a spravovat. Jednotky Systemd se obvykle používají ke spouštění, zastavování, správě služeb, organizaci bootovacích procesů, údržbě úloh a procesů, vytváření soketů, bodů automatického připojení, odkládání souborů nebo oddílů, připojení souborového systému a inicializaci hardwaru.

Jednotky systemd jsou umístěny v adresáři /etc/systemd/system. Jakýkoli skript, který chcete spustit při spouštění pomocí jednotek Systemd, musí být uveden v souboru (jednotce) ve výše uvedeném adresáři.

Pro zjednodušení vztahu mezi systemd a jednotky lepší je uvažovat o systému jako trenér týmu než o jednotkách jako o vybavení a nezbytnostech v týmu, například míče, kuří oka, tělocvična, hřiště, hrací soupravy, abychom zmínili jen některé. Aby kouč řídil tým tak, aby podával lepší výkon, využívá dostupné vybavení k hlubokému zlepšení týmu. Podobně systemd používá jednotky k řízení a správě systémových procesů a služeb.

Některé typy Systemd Unit zahrnují:
  • Cíl – Kolekce jednotek, která popisuje synchronizační bod. Synchronizační bod se používá při spouštění ke spuštění systému v určitém stavu.
  • Připojit – Jednotka tohoto druhu řídí bod připojení souborového systému.
  • Zařízení – Jednotka tohoto typu řídí aktivaci na základě zařízení jako ovladač zařízení.
  • Zásuvka – Tento typ jednotky aktivuje službu, když služba získá příchozí provoz na naslouchajícím soketu.
  • Cesta – Tento typ jednotky monitoruje soubory/adresáře a poté aktivuje/deaktivuje službu, pokud je uvedený soubor nebo adresář načten.
  • Časovač – Tento typ jednotky provádí aktivaci a deaktivaci určité služby na základě časovače nebo po uplynutí nastaveného času.
  • Rozsah – Jednotka, která systematizuje a řídí zahraniční procesy.

Výpis systémových jednotek

Níže je rychlý pohled na existující systémové jednotky v našem systému pomocí ls příkaz.

ls /etc/systemd/system

Jedním ze souborů vyloučených na snímku výše je tomcat.service, jehož obsah je takový, jak je zobrazen na následujícím obrázku.

Chcete-li se seznámit s konfiguračními soubory jednotky na výše uvedeném snímku, podívejte se na následující podrobné informace. Nebojte se o ně, protože jednotka, kterou vytvoříte pro spouštění skriptu, bude o něco jednodušší.

Mezi direktivy jednotky patří;
  • Popis: Tato směrnice vám obvykle umožňuje připojit popis jednotky; zde můžete nastavit název jednotky, který má být potvrzen.
  • Požaduje: Závislosti jednotek jsou zde obvykle specifikovány. Je třeba poznamenat, že pro tento podobný účel existují různé směrnice. Například direktiva Vyžaduje stanovuje přísné závislosti, bez kterých jednotka nemůže fungovat. Na rozdíl od požadavků se Wants používá ke specifikaci závislostí, bez kterých může jednotka pokračovat v provozu.
  • Po: Aktuální jednotka se spustí po jednotce určené v této směrnici.
Direktivy sekce [Service]:

  • Typ: rozvětvení označuje, že služba bude ukončena, přičemž budou zachovány podřízené procesy, kterým musí být přiřazena identifikace procesu (PID).
  • Prostředí: Zde lze zadat proměnné prostředí jednotky.
  • ExecStart: Tato direktiva vám umožňuje zadat cestu a příkazy, které chcete provést.
  • ExecStop: můžete uvést příkaz použitý k zastavení jednotky.
  • SuccessExitStatus: Tato směrnice vám umožňuje vyjmenovat výstupní stav a signály.
  • Uživatel: můžete identifikovat uživatele, vlastníka jednotky.
  • Skupina: můžete vyjmenovat skupinového vlastníka jednotky.
  • UMask: můžete zadat uživatelskou masku.
  • RestartSec: Pokud se jednotka samovolně restartuje, můžete určit dobu čekání na restartování služby.
  • Restartovat: můžete pro Systemd nastínit, kdy by měla být jednotka restartována. Dostupné možnosti jsou vždy při hlídání, při selhání, při abnormálním stavu, při úspěchu a při přerušení.

Direktiva [Install] ve výše uvedené instanci je WantedBy.

  • WantedBy: Tato směrnice vám umožňuje načrtnout jednotku jako závislost; je to podobné jako Chce direktivu, ale určit, zda je aktuální jednotka dobře promyšlená jako závislost jinou jednotkou.

Další obvyklé direktivy v sekci [Unit], které nebyly začleněny do předchozího snímku obrazovky:

  • Vyžaduje: V této direktivě můžete určit závislosti pro odvrácení selhání spouštění. Na rozdíl od Chce direktiva, pokud není splněna závislost určená direktivou Requires, jednotka nebude fungovat.

V části [Služba]:

  • soubor PIDF: Direktiva forking vyžaduje direktivu PIDFile, která má cestu k souboru PID podřízeného procesu, aby ji Systemd detekoval.
  • StartLimitInterval: určuje, že jednotka má 60 sekund na 10 pokusů o restart při selhání.
  • StartLimitBurst: Tato směrnice ukazuje limit pokusů, v předchozím příkladu deset pokusů za 60 sekund.

Další informace o jednotkách Systemd naleznete na tomto odkazu.

Spusťte skript při spouštění v Debianu 11

Metoda 1:Použití jednotky systemd ke spuštění skriptu při spouštění

Spuštění skriptu při spouštění může být jednoduché a může mít menší konfiguraci než soubor tomcat.service, který jsme dříve používali k zobrazení běžného obsahu jednotky.

Soubory (jednotky) obsahující informace o skriptech spuštěných při bootování jsou umístěny v /etc/systemd/system. Chcete-li vyjádřit skript ke spuštění při spouštění, musíte pro tento skript vygenerovat novou jednotku. Jako takový můžete pro účely tvorby použít jakýkoli editor. V našem případě však půjdeme s nano editorem, ve kterém vytvoříme jednotku s názvem script.service. Všimněte si, že tento název lze změnit na libovolné z vašich předvoleb, aby bylo možné pohodlně identifikovat váš skript.

sudo nano /etc/systemd/system/script.service

Poté zkopírujte a vložte následující kód do souboru, který jste vygenerovali v /etc/systemd/system.

 s cestou k vašemu skriptu.[Unit]Description=Název vašeho skriptu hereAfter=default.target[Service]ExecStart=/PATH/TO/Script.sh[Install]  

Poté nezapomeňte nahradit názvem vašeho skriptu a cestou k vašemu skriptu, jak je uvedeno níže:

Po zkopírování dat do souboru pod /etc/systemd/system/ byste to měli povolit pomocí příkazu systemctl zobrazeného níže.

sudo systemctl enable script.service

Poznámka: Nezapomeňte nahradit příslušným názvem, který jste jednotce přiřadili.

A bum! Nyní je váš skript připraven ke spuštění v Debianu 11

Metoda 2:Jak automaticky spustit program při startu Linuxu přes Cron

Cron je démon používaný ke spouštění naplánovaných příkazů. Příkazy jsou uloženy v tabulce korunových úloh nebo contrab a jsou specifické pro každého uživatele v systému. Spouští se během spouštění systému buď inicializací System V nebo systemd a můžete naplánovat spuštění své úlohy nebo programu přímo během samotného spouštění systému, když pečlivě projdete následujícími kroky:

Krok 1: Otevřete výchozí editor contrab spuštěním následujícího příkazu:

crontab -e

Pokud je to poprvé, co spouštíte příkaz contrab, budete muset vybrat editor, jak ukazuje další část kódu:

$ crontab -eno crontab pro uživatele - pomocí prázdné Vyberte editor. Pro změnu později spusťte 'select-editor'.1. /bin/nano <---- nejjednodušší2. /usr/bin/vim.basic3. /bin/edVyberte 1-3 [1]:

Po výběru daného počtu možností se vám vytvoří contrab a provede se pomocí uživatelských práv. V případě, že potřebujete, aby váš program běžel jako uživatel root, spusťte contrab -e jako samotný uživatel root

Krok 2: Přidejte řádek začínající @reboot

# m h dom mon dow command@reboot

Krok 3: Vložte preferovaný příkaz ke spuštění programu po restartu @, jak je znázorněno níže:

@reboot /sbin/ip addr | grep inet\ | ocas -n1 | awk '{ print $2 }'> /etc/issue &&echo "">> /etc/issue

@reboot definuje úlohu, která se má provést během spouštění systému.

Poznámka: Ujistěte se, že používáte úplnou cestu pro své programy, kdykoli je to možné, a pište příkazy na jeden řádek, abyste předešli konfliktům se systémem.

Krok 4:Uložte soubor

Po zavření editoru pomocí „Ctrl + x“ jak je uvedeno níže

poté Y uložit,

Měli byste vidět příkaz „installing new contrab“ v terminálu, jak je znázorněno níže:

Krok 5:Konfigurace

Nakonec můžete spustit kontrolu, abyste potvrdili, zda byl contrab nakonfigurován správně. Je však nezbytné poznamenat, že tento krok není povinný

crontab -l

A to by mělo stačit, lidi!

Metoda 3:Jak automaticky spustit program při spuštění Linuxu přes RC.LOCAL

rc.local je jednoduše dědictví ze systému System V init. Je to poslední skript, který se má provést před přechodem na přihlašovací obrazovku pro desktopové prostředí nebo výzvu k přihlášení na terminálu. Obvykle je to skript Bash shell a můžete také spustit cokoli ze skriptu. Pomocí následujících kroků nakonfigurujte svůj lokální skript rc.local.

Krok 1: Nejprve vytvořte soubor /etc/rc.local, pokud ve vašem systému neexistuje, pomocí preferovaného editoru a jako uživatel root. V našem případě půjdeme s editorem Vi spuštěním následujícího příkazu:

sudo vi /etc/rc.local

Krok 2: Přidejte zástupný kód

Poté do souboru připojte následující zástupný kód

#!/bin/bashexit 0

Musí začínat interpretem (/bin/bash) a končit výstupním kódem (0, který označuje úspěch).

Krok 3: Přidat příkaz a logiku

Zde přidáte příkaz a logiku k souborům podle potřeby.

/sbin/ip addr | grep inet\ | ocas -n1 | awk '{ print $2 }'> /etc/issueecho "">> /etc/issue

Podívejte se, jak se to dělá, na následujícím snímku.

Krok 4:Uložte a ukončete editor Vi

Chcete-li uložit a ukončit soubor v editoru Vim, použijte „:wq“ příkaz. Chceme uložit soubor a ukončit editor současně, abychom spustili příkaz, který udělá soubor spustitelným. Stiskněte ESC, čímž se přepnete do normálního režimu. Poté zadejte :wq a stiskněte Enter.

Krok 5: Udělejte soubor jako spustitelný

Po uložení souboru jej musíme učinit spustitelným pomocí následujícího příkazu:

sudo chmod a+x /etc/rc.local

Soubor by pak měl být spuštěn jako uživatel root během spouštění systému.

Závěr

Závěrem lze říci, že spouštění skriptů při zavádění v Debianu 11 pomocí Systemd, cronu a rc.local je relativně snadné. Každý uživatel Linuxu může tento úkol rychle dokončit vytvořením jednoduchého souboru v adresáři jednotek. Tento článek prošel různými způsoby spuštění skriptu při spuštění v distribuci Linuxu, konkrétně v Debianu.

Každý má své výhody a nevýhody, ale obecně řečeno, systemd a cron by měly být nejvýhodnějšími možnostmi. Na druhou stranu můžete také použít rc.local, na který jsme se také podívali.


Debian
  1. spouštěcí skript utorrent / spouštění utorrentu při spouštění – Ubuntu 14.04 / 14.10

  2. Jak spustit skript??

  3. Jak spustit skript, když pošta dorazí na poštovní server? (Debian)

  1. Jak spustit skript Bash {7 metod}

  2. Debian – Jak spouštět 32bitové programy na 64bitovém Debianu/ubuntu?

  3. Jak spustit skript s systemd těsně před vypnutím?

  1. Jak spustit Debian Sid (relativně) bezpečně

  2. Jak duální bootování Windows 10 a Debian 10

  3. Jak nainstalovat Java 17 (JDK 17) na Debian 11