Dávkové úlohy můžete v UNIX / Linux spouštět pomocí kteréhokoli ze tří příkazů – at, batch nebo cron.
V tomto článku se podíváme na to, jak naplánovat úlohu, zobrazit úlohu a odstranit úlohu pomocí příkazu at .
Úkol můžete naplánovat dvěma různými způsoby:
- Naplánujte provedení úlohy na konkrétní čas. Například 3. července, 10:00
- Naplánujte si provedení úlohy v relativním čase od nynějška. Například za 5 hodin.
1. Naplánujte si úkol na konkrétní datum a čas
Syntaxe:
$ at time date
Chcete-li například naplánovat úlohu na 20. května v 11 hodin, použijte následující příkaz at.
$ at 11 am may 20
2. Naplánujte si práci v práci pomocí relativního času
Od této chvíle můžete naplánovat provedení úlohy pomocí relativního času.
Syntaxe:
$ at now + COUNT UNIT
Například následující úloha bude provedena za 1 minutu ode dneška.
$ at now + 1 min
Výše uvedený příklad přečte příkazy ze stdin a po minutě provede úlohu. Když zadáte něco špatně ve formátu času, zobrazí se chyba „Zkomolený čas ‘.
Úlohu na pozadí můžete naplánovat na 1 hodinu od nynějška nebo (nebo) za 1 den pomocí následujícího příkazu:
$ at now + 1 hour $ at now + 1 day
Podobně jako u příkazu at můžete také použít crontab k provádění úloh v naplánovanou dobu. Viz náš dřívější článek s příklady 15 příkazů cron.
3. Zobrazte všechny naplánované úlohy pomocí atq
Můžete použít příkaz atq (nebo at -l) k zobrazení všech úloh příkazu at, které jsou naplánovány nebo aktuálně spuštěny.
Následující příkaz atq zobrazí seznam všech čekajících at pracovní místa. První zobrazené číslo je číslo úlohy, za nímž následuje čas, ve kterém má být proces proveden, a uživatelské jméno.
$ atq 4 2010-04-20 11:00 a sathiya
4. Odebrat/smazat naplánovanou úlohu pomocí atrm
K odstranění konkrétní úlohy můžete použít příkaz atrm (nebo na -d). Chcete-li například odstranit úlohu číslo 4, použijte následující příkaz atrm.
$ atrm 4
5. Proveďte úlohu pouze v případě, že průměrná zátěž systému je <1,5 pomocí dávkového příkazu
Úlohu můžete naplánovat pomocí dávkového příkazu, který vás vyzve k zadání příkazu, který bude proveden, když je průměrné zatížení systému menší než 1,5.
$ batch
Po úspěšném dokončení zadání získáte číslo zakázky. Pro výpis a odstranění dávkových úloh můžete použít příkazy at vysvětlené výše.
6. Plánujte úlohy ze souboru pomocí volby -f
Nejprve vytvořte textový soubor, který obsahuje všechny příkazy nebo skripty shellu, které chcete spouštět na pozadí pomocí příkazu at.
$ cat myjobs.txt /home/sathiya/calculate-space.sh /path/to/a/shell-script /path/to/any/command/or/script
Pomocí volby -f můžete vytvořit příkaz at pro získání vstupu ze souboru místo stdin.
Následující příkaz za 1 hodinu provede všechny úlohy ze souboru myjobs.txt.
$ at -f myjobs.txt now + 1 hour
7. Povolení a zákaz používání určitých uživatelů v úlohách
Správce systému může řídit, kdo může naplánovat úlohu at a kdo nemůže používat soubory at.allow a at.deny.
Nejprve systém zkontroluje soubor at.allow. Pokud at.allow existuje, pouze uživatelská jména specifikovaná v souboru at.allow mohou používat příkaz at.
Dále (pokud at.allow neexistuje), systém zkontroluje soubor at.deny. Pokud existuje at.deny, uživatelská jména zadaná v souboru at.deny nemohou používat příkaz at.
Ve výchozím nastavení většina systémů používá soubor at.deny, aby zabránila určitým uživatelům používat příkaz at, jako je www-data, guest, backup, man user.
8. Proveďte příkazem jako nohup
Podobně jako u příkazu nohup, o kterém jsme hovořili dříve, můžete spustit příkaz (nebo skript shellu) na vzdáleném serveru pomocí příkazu at a odhlásit se ze serveru.
$ at -f myjob now + 1 min $ exit
Poznámka:myjob bude stále spuštěn, i když opustíte server.
9. Další formáty času příkazu
Ve formátu data a času příkazu můžete použít kterýkoli z následujících:
$ at 10 am tomorrow $ at 11:00 next month $ at 22:00 today $ at now + 1 week $ at noon