GNU/Linux >> Znalost Linux >  >> Linux

Jak provádět a vypisovat úlohy Cron pro systém Linux prostřednictvím PHP

Ruční práce s úlohami cron je nejběžnější u malých objemů úloh cron. Ale co když pracujete s velkým množstvím úloh cron? PHP je odpověď! Proč PHP? Jednoduše proto, že dokáže automatizovat úlohy potřebné k přidávání, odstraňování a seznamování úloh cron.

Nejste čtenář? Podívejte se na tento související video tutoriál! Nevidíte video? Ujistěte se, že máte vypnutý blokovač reklam.

V tomto tutoriálu se dozvíte, jak může PHP ušetřit čas automatizací přidávání, odebírání a vypisování úloh cron pro systém Linux.

Připraveni? Skočte rovnou dovnitř!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující:

  • Crontab – Crontab se obvykle instaluje na operační systémy Linux ve výchozím nastavení.
  • Většina distribucí Linuxu využívá stejný systém cron. Příklady jsou zde zobrazeny na macOS používajícím základní systém založený na BSD.

Vytvoření souboru Crontab

Než budete moci spravovat úlohy cronu, musíte nejprve soubor pro uložení těchto úloh cronu. Všechny úlohy cron jsou uloženy v jednom systémovém souboru crontab.

Otevřete svůj terminál a spusťte níže uvedený příkaz pro změnu adresáře na /usr/local a vytvořte podadresáře (jobs a scripts ). Tyto adresáře můžete pojmenovat jinak, jak chcete. Tyto adresáře budou později ukládat vaše soubory úloh cron a skripty.

cd /usr/local && sudo mkdir jobs scripts

Nyní spusťte níže uvedený příkaz a vytvořte soubor crontab (crontab -e ). Soubor crontab se automaticky vytvoří ve vašem ~/tmp při prvním vyvolání crontab příkaz.

# Sets default text editor to nano
export EDITOR='nano'
# Initializes the crontab file and opens it in nano
crontab -e

Přidávání úloh jednoho Cron

Nyní, když jste vytvořili soubor crontab, můžete začít spravovat své úlohy cron. Nejprve se ale musíte zaměřit na jejich přidávání přes PHP. Jak? Vytvoříte a spustíte PHP skript pro přidání úloh cron.

Úlohy cron jsou naplánovány s pěti parametry, jak je uvedeno níže. Každý parametr má výchozí hodnotu *, což znamená, že pro tento parametr nebyla zadána žádná hodnota, ať už pro hodinové, denní, týdenní nebo měsíční úlohy cron.

     

Pokud si potřebujete zopakovat syntaxi úlohy cron s příklady, podívejte se na web crontab.

1. Vytvořte soubor v textovém editoru, zkopírujte/vložte níže uvedený kód a uložte jej do /usr/local/jobs adresář. V tomto příkladu se soubor jmenuje newjob.py , ale můžete to pojmenovat jinak. Níže uvedený kód vytiskne text (Executed! ) při spuštění.

print("Executed!")

2. Dále vytvořte soubor skriptu PHP, zkopírujte/vložte níže uvedený kód do tohoto souboru PHP a uložte jej do složky /usr/local/scripts . Pro tento tutoriál se skript jmenuje add.php .

V průběhu výukového programu mějte na paměti, že ukládáte soubory skriptů do adresáře /usr/local/scripts a soubory úloh cron do adresáře /usr/local/jobs.

Níže uvedený kód přidá newjob.py soubor jako cron job v souboru crontab.

shell_exec operace ukládá seznam úloh cron do řetězce v paměti před přidáním nové, takže neztratíte žádnou ze stávajících úloh cron.

Vykazuje shell_exec nefunguje? Tuto funkci můžete mít ve svém souboru php.ini vypnutou. Hledejte disable_functions konfiguraci ve vašem php.ini a odstraňte shell_exec ze seznamu. Mějte na paměti, že toho lze zneužít, proto buďte s touto funkcí opatrní!

3. Spusťte níže uvedený příkaz a spusťte add.php skript z /usr/local/scripts adresář. php add.php

php add.php

Při spouštění skriptů v průběhu kurzu se ujistěte, že jste v adresáři /usr/local/scripts.

4. Nakonec spusťte níže uvedený crontab -l příkaz ke kontrole, zda nová úloha cron existuje.

crontab -l

Výpis úloh Cron

Možná chcete mít přehled o úlohách cron, které jste přidali, abyste je mohli aktualizovat nebo odstranit. Pokud ano, vaším prvním krokem je vypsat seznam existujících úloh cron. Výpis úloh cron se hodí, abyste měli přehled o úlohách cron, které máte.

Vytvořte nový PHP skript, dejte mu jedinečný název a vložte níže uvedený kód do souboru skriptu. V tomto příkladu se skript jmenuje list.php .

Níže uvedený kód je shell_exec operace shromáždí a zobrazí (echo() ) všechny úlohy cronu (crontab -l ) ze souboru crontab.

Nyní spusťte níže uvedený příkaz a spusťte list.php skript.

php list.php

Vypsání pole úloh Cron

Možná budete chtít vytisknout seznam úloh cron v poli namísto prostého seznamu. Pokud ano, budete potřebovat ) and [var_dump()](explode() funkcí. Tyto funkce vám umožňují ukládat úlohy cron do souboru crontab jako prvek uvnitř pole.

Nahraďte obsah souboru list.php soubor s níže uvedeným kódem. Spuštěním níže uvedeného kódu se zobrazí pole úloh cron a také se vytiskne délka řetězce úlohy cron.

Nyní spusťte níže uvedený příkaz a spusťte list.php skript.

php list.php

Jak vidíte níže, výstupem kódu je seznam úloh cron v poli a zároveň ukazuje délku řetězce.

Odebrání úloh Cron

Nyní, když máte seznam existujících úloh cronu, můžete se rozhodnout, co chcete s každou úlohou cronu dělat. Možná máte úlohy cron, které chcete odstranit. Pokud ano, určíte úlohu cron, kterou chcete odstranit, v řetězcové proměnné.

1. Vytvořte nový PHP skript s názvem remove.php pro tento příklad pak přidejte do skriptu níže uvedený kód. Soubor skriptu můžete pojmenovat jinak, jak chcete.

Níže uvedený kód odstraní konkrétní úlohu cron ze souboru crontab.

2. Spuštěním následujícího příkazu spusťte remove.php skript.

php remove.php

3. Nakonec spusťte crontab -l příkaz, abyste zjistili, zda jste odstranili newjob.php cron práce. crontab -l

crontab -l

Přidávání a odebírání více úloh Cron

Přidáním jedné úlohy cron můžete také přidat více úloh cron, třeba když máte denní úlohy, které chcete automatizovat. Jak? Přidáním smyčky for do vašeho skriptu.

Přidávání a odebírání více úloh cron sdílí podobný přístup, ale skript pro odstranění více úloh cron využívá více proměnných, jak je ukázáno níže.

1. Nahraďte obsah souboru add.php soubor s níže uvedeným kódem. Spuštěním níže uvedeného kódu přidáte do souboru crontab několik úloh cron pomocí procházení pole.

2. Poté znovu spusťte níže uvedený příkaz a spusťte add.php skript. php add.php

php add.php

3. Spusťte níže uvedený crontab -l příkaz k ověření, zda úlohy cron, které jste přidali do souboru crontab, existují. crontab -l

crontab -l

4. Nyní nahraďte obsah souboru remove.php soubor s níže uvedeným kódem, který odstraní více úloh cron, které jste definovali. Podobně jako u přidávání více úloh cron platí stejný přístup při odstraňování více úloh cron, ale s dalšími proměnnými.

5. Spuštěním následujícího příkazu spusťte remove.php skript.

php remove.php

6. Nakonec spusťte crontab -l příkaz k ověření, že jste odstranili úlohy cron.

 crontab -l

Pokud jste úspěšně odstranili úlohy cron, nezískáte výstup, jako je ten níže.

Vytvoření funkcí pro správu úloh Cron

Zatím jste viděli, jak lze přidávat, odebírat a vypisovat úlohy cron v samostatných skriptech. Chcete-li však efektivně spravovat úlohy cron, můžete vytvářet funkce v jediném skriptu namísto spouštění tří samostatných skriptů.

Vytvořte nový soubor skriptu a vložte níže uvedený kód. Dejte skriptu libovolný název, který chcete, ale v tomto příkladu se skript jmenuje multi.php .

Níže uvedený kód přidává, odstraňuje a uvádí úlohy cron se třemi samostatnými funkcemi, které můžete volat ve spodní části skriptu.


Nyní spusťte níže uvedený příkaz a spusťte multi.php skript.

php multi.php

Níže můžete vidět výstup list_jobs() funkce volaná v multi.php skript.

Prevence přetížení paměti

Viděli jste schopnosti PHP při správě úloh cron, ale příliš mnoho úloh cron spotřebovává paměť. Jak se vyhnout přetížení paměti? Nastavte limit počtu úloh cron, které můžete přidat do souboru crontab.

1. Přidejte následující funkci do multi.php skript. Níže uvedená funkce počítá všechny úlohy cron tak, že spočítá všechny řádky v souboru crontab a vytiskne zprávu, která vás informuje o aktuálním počtu úloh cron.

function count_jobs(){
    $jobs = shell_exec("crontab -l");
    # Counts all cron jobs from the crontab file and prints the result
    echo("You currently have ".substr_count( $jobs, "\n")." cron jobs");
}

2. Dále zavolejte count_jobs() funkce na konci skriptu, jak jste to udělali v části „Vytváření funkcí pro správu úloh Cron“.

3. Spusťte níže uvedený příkaz a spusťte multi.php skript.

php multi.php

Jak můžete vidět níže, je zde zpráva, která vám sdělí aktuální počet úloh cron.

Možná však budete chtít skript automaticky ukončit, pokud současně běží příliš mnoho úloh cron. Pokud ano, přidejte if podmínka to udělá.

4. Nahraďte count_jobs() funkce v multi.php soubor s níže uvedeným.

Níže uvedená funkce přečte počet řádků uvnitř souboru crontab a na základě tohoto počtu rozhodne, zda skript ukončit nebo ne.

function count_jobs(){
    $jobs = shell_exec("crontab -l");
    # Counts all cron jobs from the crontab file and prints the result
    echo("You currently have ".substr_count( $jobs, "\n")." cron jobs\n");
    # Checks whether the cron jobs count is over 50 or not
    if(substr_count( $jobs, "\n") > 50){
        # Prints a message and terminates the script 
        exit("Too many cron jobs, cannot add any more!");
    }
}

5. Nakonec spusťte multi.php skript jako v kroku tři. php multi.php

php multi.php

Ve výstupu níže můžete vidět zprávu, která vám sděluje aktuální počet úloh cron (63 ). Protože počet úloh cron je více než 50, skript se poté automaticky ukončí a nebude pokračovat v přidávání úloh cron.

Závěr

V tomto tutoriálu jste si uvědomili, že PHP poskytuje způsob, jak automatizovat úlohy cron pomocí shell_exec() funkce. Naučili jste se přidávat, odstraňovat a vypisovat úlohy cron v jediném skriptu PHP a přitom zajistit, abyste nepřetěžovali svou paměť.

Zvážíte nyní PHP, až budete příště potřebovat spravovat úlohy cron pro své projekty?


Linux
  1. Jak zkontrolovat verzi OS a Linuxu

  2. Použití at pro jednorázové úlohy cron v Linuxu

  3. Jak připojit a odpojit souborový systém v Linuxu

  1. Jak zobrazit, zobrazit a zobrazit všechny aktuální úlohy Cron v Linuxu

  2. Jak spouštět skripty prostřednictvím úloh cron

  3. Jak spravovat a vypisovat služby v Linuxu

  1. Jak nastavit a vypsat proměnné prostředí v Linuxu

  2. Jak vypsat Cron Jobs v Linuxu

  3. Různé způsoby plánování a výpisu úloh CRON v Linuxu