GNU/Linux >> Znalost Linux >  >> Linux

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

Cron je jedním z nejznámějších UNIXismů v počítačovém světě. Dokonce i IT lidé, kteří nespravují linuxové servery, slyšeli o této záhadné bestii, „cron job“. A správci Linuxu vědí, že úlohy cron jsou nekonečně užitečné. Ve skutečnosti je sporné, že cron systém byl raným předchůdcem automatizačního šílenství. Pokud existuje něco, co by člověk mohl zapomenout udělat, cron byla odpověď.

Kde však cron excel je opakování a někdy nepotřebujete, aby úloha běžela každou hodinu, každý den nebo každý týden. Potřebujete jen, aby byla úloha provedena podle plánu, a nastavení budíku, který vám připomene, prostě nevypadá jako způsob UNIX. Co potřebujete, je at command, malý nástroj, který můžete použít k vytvoření fronty úloh naplánovaných ke spuštění at konkrétní čas v budoucnosti.

Nastavení

Před použitím at musíte mít skript shellu, který chcete někdy spustit. Jako obvykle by váš skript měl mít v horní části souboru řádek „magic cookie“ nebo „shebang“, abyste nastavili, který shell se má použít pro jeho spuštění.
Pro tento příklad vytvořte jednoduchý skript, který vytvoří soubor v /tmp :

#!/bin/sh

DATE=`date --utc +%s`
echo "hello world $DATE" | tee /tmp/at.log
exit 0

Udělejte skript spustitelný a poté jej vyzkoušejte:

$ chmod +x test.sh
$ ./test.sh

Prohlédněte si obsah /tmp/at.log soubor vytvořený skript:

$ cat /tmp/at.log

hello world 1588482185

Plánování úlohy

Úlohu můžete naplánovat pomocí časového razítka nebo přirozeného jazyka. Pokud používáte přirozený jazyk nebo jednoduché formáty času, není před zadáním času vyžadována žádná možnost.
Například pro naplánování test.sh chcete-li okamžitě spustit, stačí použít klíčové slovo now :

$ at now -f test.sh

warning: commands will be executed using /bin/sh
job 1 at Mon Feb 24 01:23:00 2020
$ cat /tmp/at.log

hello world 1588482620

Odsazení můžete nastavit od teď pomocí minutes , hours , days , weeks nebo years .

$ at now + 1 day -f test.sh

warning: commands will be executed using /bin/sh
job 2 at Tue Feb 25 01:27:00 2020

years klíčové slovo je nezdokumentované a seconds není podporováno. Můžete také určit běžné časy, například midnight , noon a teatime (to je 16:00).

Jednoduché časy také fungují:

$ at 21:12 -f test.sh

warning: commands will be executed using /bin/sh
job 3 at Mon Feb 24 21:12:00 2020

Chcete-li naplánovat datum kalendáře na konkrétní čas, musíte použít -t možnost a jakýkoli formát času vyhovující POSIX. Například pomocí formátu YYYYMMDDHHMM:

$ at -t 202003141509 -f test.sh

warning: commands will be executed using /bin/sh
job 4 at Sat Mar 14 15:09:00 2020

[ Hledáte pokročilejší automatizaci systému? Začněte s The Automated Enterprise, bezplatnou knihou od Red Hat. ]

Trubky

Příkazy můžete odesílat na adresu at prostřednictvím kanálu UNIX:

$ echo "hello world" > /tmp/at.log | at now

warning: commands will be executed using /bin/sh
job 5 at Mon Feb 24 01:28:00 2020

$ cat /tmp/at.log

hello world

Dávkové úlohy

batch příkaz (nebo at -b ) provede příkaz, jakmile to systémové prostředky dovolí. Pokud je zatížení vašeho systému vysoké, můžete použít batch zařadit vaši úlohu do fronty, aby byla spuštěna, když jsou k dispozici cykly CPU.

$ echo "Cycles to spare" > /tmp/at.log | batch

warning: commands will be executed using /bin/sh
job 5 at Mon Feb 24 01:31:00 2020

Zobrazení vaší fronty

atq zobrazí váš at fronta. Získáte tak ID úlohy, čas, kdy je každá úloha naplánována ke spuštění, frontu, do které je každá úloha seskupena (a pro at fronta nebo b pro batch fronta) a uživatelské jméno vlastníka fronty. Vlastníkem fronty jste obvykle vy, pokud nepoužíváte atq jako root, v takovém případě uvidíte všechny uživatele at fronty.

$ atq 

2   Tue Feb 25 01:27:00 2020  a  seth
3   Mon Feb 24 21:12:00 2020  a  seth
4   Sat Mar 14 15:09:00 2020  a  seth
5   Mon Feb 24 01:31:00 2020  b  seth

Své vlastní fronty můžete vytvářet a pojmenovávat pomocí libovolného jediného znaku c-z nebo A–Z . Oba a a b jsou vyhrazená označení pro at a batch a každá fronta s velkým písmenem je považována za batch práce. Fronty s názvy, které následují abecedně za a a b jsou provozovány s rostoucí slušností.

Náhled vaší úlohy

Když odešlete příkaz nebo skript na at , váš aktuální pracovní adresář, prostředí (kromě BASH_VERSINFO , DISPLAY , EUID , GROUPS , SHELLOPTS , TERM , UID a _ ) a umask jsou zachovány. Pokud váš příkaz očekává specifická nastavení prostředí, měli byste je nastavit při předávání příkazu na at nebo je přepište ve skriptu.

Chcete-li zjistit, jak bude váš příkaz probíhat, použijte -c možnost spolu s číslem zakázky:

$ at -c 4

#!/bin/sh
# atrun uid=1006 gid=1006
# mail seth 0

umask 22
CPLUS_INCLUDE_PATH=/usr/lib64/qt/include; export CPLUS_INCLUDE_PATH
MANPATH=/usr/local/man:/usr/man:/usr/lib64/adoptopenjdk12.0.2/man; export MANPATH
KDE_MULTIHEAD=false; export KDE_MULTIHEAD
[...]

Odebírání úloh

Čekající úlohy můžete odstranit ze svého at fronty pomocí atrm příkaz a ID úlohy. Pokud neznáte ID úlohy, použijte atq pro zobrazení fronty jako první.

$ atq 

6   Fri Jan 01 00:00:00 2038  a  seth
$ atrm 6

$ atq

Plánování pomocí na

at příkaz je trochu jako menší cron Systém. Je to užitečné pro jednorázové spuštění příkazu a jeho použití je snadné. Pokud jste používali cron nebo sleep Chcete-li kompenzovat dobu provádění příkazu, podívejte se na at a batch .

[ Potřebujete se dozvědět více o správě systému Linux? Zvažte absolvování kurzu správy systému Red Hat. ]


Linux
  1. jobs Možnosti příkazů V Linuxu

  2. Použití proměnných v SQLCMD pro Linux

  3. Používáte úlohy CRON k návštěvě adresy URL?

  1. Linuxové tipy pro používání cronu k plánování úloh

  2. Použití AppImage pro správu balíčků Linuxu

  3. Odstraňte soubory protokolu pomocí úlohy cron

  1. Cron Job:Komplexní průvodce pro začátečníky 2022

  2. Definování systémových úloh pomocí Cron pod Linuxem

  3. Linux:Spusťte úlohu cron v popředí