GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di at per lavori cron monouso in Linux

Cron è uno degli UNIXismi più riconoscibili del mondo dei computer. Anche gli informatici che non amministrano i server Linux hanno sentito parlare di quella misteriosa bestia, il "cron job". E gli amministratori Linux sanno che i lavori cron sono infinitamente utili. In effetti, è discutibile che il cron sistema è stato uno dei primi capostipite della mania dell'automazione. Se c'era qualcosa che sapevi che un essere umano potrebbe dimenticare di fare, cron era la risposta.

Tuttavia, dove cron excels è ripetizione e, a volte, non è necessario un lavoro da eseguire ogni ora o ogni giorno o ogni settimana. Hai solo bisogno di un lavoro da eseguire nei tempi previsti e l'impostazione di un allarme per ricordarti non sembra il modo UNIX. Quello che ti serve è il at command, una piccola utilità che puoi utilizzare per creare una coda di lavori pianificati per l'esecuzione at un momento specifico nel futuro.

Configurazione

Prima di utilizzare il at comando, è necessario disporre di uno script di shell che si desidera avviare prima o poi. Come al solito, il tuo script dovrebbe avere una riga "magic cookie" o "shebang" nella parte superiore del file per impostare quale shell utilizzare per la sua esecuzione.
Per questo esempio, crea un semplice script che crea un file in /tmp :

#!/bin/sh

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

Rendi lo script eseguibile e poi esegui un test:

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

Visualizza il contenuto del /tmp/at.log file lo script creato:

$ cat /tmp/at.log

hello world 1588482185

Pianificazione di un lavoro

È possibile pianificare un lavoro utilizzando un timestamp o con il linguaggio naturale. Se utilizzi il linguaggio naturale o semplici formati dell'ora, non è richiesta alcuna opzione prima di specificare l'ora.
Ad esempio, per programmare test.sh per eseguire immediatamente, puoi semplicemente utilizzare la parola chiave 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

Puoi impostare un offset da adesso utilizzando minutes , hours , days , weeks o 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

Gli years la parola chiave non è documentata e seconds non è supportato. Puoi anche specificare orari comuni, come midnight , noon e teatime (sono le 16:00).

Anche i tempi semplici funzionano:

$ at 21:12 -f test.sh

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

Per programmare una data di calendario a un'ora specifica, devi utilizzare il -t opzione e qualsiasi formato dell'ora conforme a POSIX. Ad esempio, utilizzando il formato AAAAMMGGHHMM:

$ at -t 202003141509 -f test.sh

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

[ Cerchi un'automazione del sistema più avanzata? Inizia con The Automated Enterprise, un libro gratuito di Red Hat. ]

Tubi

Puoi inviare comandi a at tramite una pipe 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

Lavori in batch

Il batch comando (o at -b ) esegue un comando non appena le risorse di sistema lo consentono. Se il carico del tuo sistema è elevato, puoi utilizzare batch per accodare il tuo lavoro in modo che venga eseguito quando ci sono cicli di CPU da risparmiare.

$ 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

Visualizzazione della tua coda

Il atq comando mostra il tuo at fare la coda. Questo ti dà l'ID lavoro, l'ora in cui è pianificata l'esecuzione di ogni lavoro, la coda in cui è raggruppato ogni lavoro (at per il at coda o b per il batch coda) e il nome utente del proprietario della coda. Il proprietario della coda di solito sei tu, a meno che tu non stia eseguendo atq come root, nel qual caso vedrai tutti i at di tutti gli utenti code.

$ 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

Puoi creare e assegnare un nome alle tue code utilizzando qualsiasi singolo carattere c-z o A-Z . Entrambi at e b sono designazioni riservate per at e batch e qualsiasi coda con una lettera maiuscola viene trattata come un batch lavoro. Code con nomi che seguono in ordine alfabetico at e b vengono eseguiti con sempre maggiore gentilezza.

Anteprima del tuo lavoro

Quando invii un comando o uno script a at , la directory di lavoro corrente, l'ambiente (escluso BASH_VERSINFO , DISPLAY , EUID , GROUPS , SHELLOPTS , TERM , UID e _ ), e l'umask vengono mantenuti. Se il tuo comando prevede impostazioni ambientali specifiche, dovresti impostarle mentre passi il comando a at o sovrascriverli nel tuo script.

Per vedere come verrà eseguito il tuo comando, usa -c opzione insieme al numero del lavoro:

$ 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
[...]

Rimozione dei lavori

Puoi rimuovere i lavori in sospeso dal tuo at fare la coda usando atrm comando e l'ID lavoro. Se non conosci l'ID lavoro, usa atq per visualizzare prima la tua coda.

$ atq 

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

$ atq

Programmazione con a

Il at comando è un po' come un cron minore sistema. È utile per l'esecuzione di comandi una tantum ed è facile da usare. Se hai utilizzato cron o sleep per compensare il tempo di esecuzione di un comando, dai un'occhiata a at e batch .

[ Hai bisogno di saperne di più sull'amministrazione del sistema Linux? Prendi in considerazione un corso di amministrazione di sistema Red Hat. ]


Linux
  1. Suggerimenti Linux per l'utilizzo di cron per pianificare le attività

  2. Definizione dei lavori di sistema utilizzando Cron in Linux

  3. Utilizzo delle variabili in SQLCMD per Linux

  4. Utilizzo di lavori CRON per visitare l'URL?

  5. Rimuovi i file di registro usando cron job

Imposta Cron Jobs per Linux e 10 migliori strumenti online per Cron Jobs

Pianifica i lavori in Linux con il comando 'at'

Come utilizzare il comando Jobs in Linux

Che cos'è un Cron Job in Linux

Come eseguire ed elencare i lavori Cron per un sistema Linux tramite PHP

Linux Crontab:15 fantastici esempi di Cron Job