Puoi eseguire lavori batch in UNIX/Linux utilizzando uno qualsiasi dei tre comandi:at, batch o cron.
In questo articolo, esaminiamo come pianificare un lavoro, visualizzare un lavoro ed eliminare un lavoro utilizzando al comando .
Puoi pianificare un lavoro in due modi diversi:
- Pianifica il lavoro da eseguire a un'ora specifica. Ad esempio, 3 luglio, 10:00
- Pianifica il lavoro da eseguire in tempi relativi a partire da ora. Ad esempio, tra 5 ore.
1. Pianifica un lavoro utilizzando data e ora specifiche
Sintassi:
$ at time date
Ad esempio, per pianificare un lavoro alle 11:00 del 20 maggio, utilizzare quanto segue al comando.
$ at 11 am may 20
2. Pianifica un lavoro utilizzando il tempo relativo
Puoi pianificare un lavoro da eseguire utilizzando il tempo relativo a partire da ora.
Sintassi:
$ at now + COUNT UNIT
Ad esempio, il seguente lavoro verrà eseguito tra 1 minuto.
$ at now + 1 min
L'esempio sopra leggerà i comandi da stdin ed eseguirà il lavoro dopo un minuto. Quando fornisci qualcosa di sbagliato nel formato dell'ora, riceverai l'errore "Tempo alterato '.
Puoi pianificare un lavoro in background per 1 ora da ora, (o) 1 giorno da adesso utilizzando il comando seguente:
$ at now + 1 hour $ at now + 1 day
Simile a comando, puoi anche usare crontab per eseguire lavori a un'ora programmata. Fare riferimento al nostro precedente articolo su 15 esempi di comandi cron.
3. Visualizza tutti i lavori programmati utilizzando atq
Puoi usare il comando atq (o at -l) per visualizzare tutti i lavori del comando at che sono pianificati o attualmente in esecuzione.
Il seguente comando atq elencherà tutti gli at in sospeso lavori. Il primo numero visualizzato è il numero del lavoro, seguito dall'ora in cui il processo deve essere eseguito e dal nome utente.
$ atq 4 2010-04-20 11:00 a sathiya
4. Rimuovere/eliminare un lavoro pianificato utilizzando atrm
È possibile utilizzare il comando atrm (o in -d) per eliminare un determinato lavoro. Ad esempio, per eliminare il lavoro numero 4, utilizzare il seguente comando atrm.
$ atrm 4
5. Esegui un lavoro solo quando la media del carico del sistema è <1,5 utilizzando il comando batch
Puoi pianificare un lavoro utilizzando il comando batch, che richiederà l'input del comando, che verrà eseguito quando la media del carico del sistema è inferiore a 1,5.
$ batch
Al completamento con successo dell'input, otterrai il numero del lavoro. Per elencare e rimuovere lavori batch puoi usare i comandi at spiegati sopra.
6. Pianifica i lavori dal file usando l'opzione -f
Per prima cosa crea un file di testo che contenga tutti i comandi o gli script di shell che vorresti fossero eseguiti in background usando at command.
$ cat myjobs.txt /home/sathiya/calculate-space.sh /path/to/a/shell-script /path/to/any/command/or/script
Usando l'opzione -f, puoi eseguire il comando at per ottenere l'input dal file invece di stdin.
Seguendo il comando verranno eseguiti tutti i lavori da myjobs.txt tra 1 ora.
$ at -f myjobs.txt now + 1 hour
7. Consentire e negare a determinati utenti l'utilizzo nei lavori
L'amministratore di sistema può controllare chi può pianificare un lavoro at e chi non può utilizzare i file at.allow e at.deny.
Innanzitutto, il sistema controlla il file at.allow. Se at.allow esiste, solo i nomi utente specificati nel file at.allow possono essere utilizzati al comando.
Successivamente, (se at.allow non esiste), il sistema verifica il file at.deny. Se esiste at.deny, i nomi utente specificati nel file at.deny non possono utilizzare il comando at.
Per impostazione predefinita, la maggior parte dei sistemi utilizza il file at.deny per impedire a determinati utenti di utilizzare il comando at, come www-data, guest, backup, man user.
8. Esegui a comando come nohup
Simile al comando nohup di cui abbiamo discusso in precedenza, puoi eseguire un comando (o uno script di shell) sul server remoto usando il comando at e disconnetterti dal server.
$ at -f myjob now + 1 min $ exit
Nota:myjob sarà ancora in esecuzione anche dopo l'uscita dal server.
9. Formati aggiuntivi al momento del comando
Puoi utilizzare uno qualsiasi dei seguenti formati di data e ora del comando:
$ at 10 am tomorrow $ at 11:00 next month $ at 22:00 today $ at now + 1 week $ at noon