Linux Professional Institute Learning Logo.
Torna al contenuto principale
  • Home
    • Tutte le Risorse
    • LPI Learning Materials
    • Collabora
    • Publishing Partner
    • Diventa un Publishing Partner
    • FAQ
    • Collaboratori
    • Contatto
  • LPI.org
107.2 Lezione 2
Argomento 105: Shell e Script di Shell
105.1 Personalizzare e utilizzare l'ambiente di shell
  • 105.1 Lezione 1
  • 105.1 Lezione 2
  • 105.1 Lezione 3
105.2 Personalizzare o scrivere semplici script
  • 105.2 Lezione 1
  • 105.2 Lezione 2
Argomento 106: Interfacce Utente e Desktop
106.1 Installare e configurare X11
  • 106.1 Lezione 1
106.2 Desktop grafici
  • 106.2 Lezione 1
106.3 Accessibilità
  • 106.3 Lezione 1
Argomento 107: Attività Amministrative
107.1 Gestire account utente e gruppo e file di sistema correlati
  • 107.1 Lezione 1
  • 107.1 Lezione 2
107.2 Automatizzare le attività di amministrazione del sistema attraverso la pianificazione
  • 107.2 Lezione 1
  • 107.2 Lezione 2
107.3 Localizzazione e internazionalizzazione
  • 107.3 Lezione 1
Argomento 108: Servizi Essenziali di Sistema
108.1 Mantenere l'orario di sistema
  • 108.1 Lezione 1
  • 108.1 Lezione 2
108.2 Logging di sistema
  • 108.2 Lezione 1
  • 108.2 Lezione 2
108.3 Concetti base dei Mail Transfer Agent (MTA)
  • 108.3 Lezione 1
108.4 Gestire stampa e stampanti
  • 108.4 Lezione 1
Argomento 109: Fondamenti di Networking
109.1 Fondamenti dei protocolli Internet
  • 109.1 Lezione 1
  • 109.1 Lezione 2
109.2 Configurazione di rete persistente
  • 109.2 Lezione 1
  • 109.2 Lezione 2
109.3 Risoluzione dei problemi di base di una rete
  • 109.3 Lezione 1
  • 109.3 Lezione 2
109.4 Configurare un client DNS
  • 109.4 Lezione 1
Argomento 110: Sicurezza
110.1 Eseguire attività di amministrazione della sicurezza
  • 110.1 Lezione 1
110.2 Configurare la sicurezza dell'host
  • 110.2 Lezione 1
110.3 Proteggere i dati con la crittografia
  • 110.3 Lezione 1
  • 110.3 Lezione 2
How to get certified
  1. Argomento 107: Attività Amministrative
  2. 107.2 Automatizzare le attività di amministrazione del sistema attraverso la pianificazione
  3. 107.2 Lezione 2

107.2 Lezione 2

Certificazione:

LPIC-1

Versione:

5.0

Argomento:

107 Attività Amministrative

Obiettivo:

107.2 Automatizzare le attività di amministrazione del sistema attraverso la pianificazione

Lezione:

2 di 2

Introduzione

Come hai imparato nella lezione precedente, puoi pianificare dei lavori regolari usando cron o i timer di systemd; a volte però potresti aver bisogno di eseguire un’attività solo per una volta in un momento specifico nel futuro. Per fare questo, puoi usare un’altra potente utility: il comando at.

Programmare attività con at

Il comando at è usato per la pianificazione di un’attività una tantum e richiede solo che si specifichi quando il lavoro deve essere eseguito in futuro. Dopo aver inserito at sulla linea di comando seguito dalla specifica del tempo, si accede al prompt at dove si possono definire i comandi da eseguire. È possibile uscire dal prompt con la sequenza di tasti Ctrl+D.

$ at now +5 minutes
warning: commands will be executed using /bin/sh
at> date
at> Ctrl+D
job 12 at Sat Sep 14 09:15:00 2019

L’attività at nell’esempio precedente esegue semplicemente il comando date dopo cinque minuti. Simile a cron, lo standard output ed error vengono inviati via e-mail. Si noti che il demone atd dovrà essere in esecuzione sul sistema per poter utilizzare la pianificazione at.

Note

In Linux, il comando batch è simile ad at, tuttavia le attività batch vengono eseguite solo quando il carico del sistema è sufficientemente basso da permetterlo.

Le opzioni più importanti che si applicano al comando at sono:

-c

Stampa i comandi di uno specifico ID lavoro allo standard output.

-d

Elimina i lavori in base al loro ID. È un alias di atrm.

-f

Legge il lavoro da un file invece che dallo standard input.

-l

Elenca i lavori in sospeso dell’utente. Se l’utente è root, vengono elencati tutti i lavori di tutti gli utenti. È un alias di atq.

-m

Invia una mail all’utente alla fine del lavoro anche se non c’è stato alcun output.

-q

Specifica una coda sotto forma di una singola lettera da a a z e da A a Z (di default a per at e b per batch). I lavori nelle code con le lettere più alte sono eseguiti con priorità più alta. I lavori inviati a una coda con una lettera maiuscola sono trattati come lavori batch.

-v

Mostra il tempo in cui il lavoro verrà eseguito prima della lettura del lavoro.

Mostrare i Lavori Pianificati con atq

Programmiamo altri due lavori at: il primo esegue lo script foo.sh alle 09:30, mentre il secondo esegue lo script bar.sh dopo un’ora.

$ at 09:30 AM
warning: commands will be executed using /bin/sh
at> ./foo.sh
at> Ctrl+D
job 13 at Sat Sep 14 09:30:00 2019
$ at now +2 hours
warning: commands will be executed using /bin/sh
at> ./bar.sh
at> Ctrl+D
job 14 at Sat Sep 14 11:10:00 2019

Per elencare i lavori in sospeso, puoi usare il comando atq che mostra le seguenti informazioni per ogni lavoro: ID del lavoro, data di esecuzione del lavoro, tempo di esecuzione del lavoro, coda e nome utente.

$ atq
14      Sat Sep  14 11:10:00 2019 a frank
13      Sat Sep  14 09:30:00 2019 a frank
12      Sat Sep  14 09:15:00 2019 a frank

Ricorda che il comando at -l è un alias di atq.

Note

Se si esegue atq come root, mostrerà i lavori in coda per tutti gli utenti.

Rimuovere i Lavori Pianificati con atrm

Se vuoi cancellare un lavoro at, puoi usare il comando atrm seguito dall’ID del lavoro. Per esempio, per cancellare il lavoro con ID 14, puoi eseguire quanto segue:

$ atrm 14

Puoi cancellare più lavori con atrm specificando più ID separati da spazi. Ricorda che il comando at -d è un alias di atrm.

Note

Se esegui atrm come root puoi cancellare i lavori di tutti gli utenti.

Configurare l’Accesso alla Pianificazione delle Attività

L’autorizzazione per gli utenti ordinari a pianificare lavori con at è determinata dai file /etc/at.allow e /etc/at.deny. Se /etc/at.allow esiste, solo gli utenti non root elencati in esso possono pianificare lavori con at. Se /etc/at.allow non esiste ma esiste /etc/at.deny, solo gli utenti non-root elencati al suo interno non possono pianificare lavori con at (in questo caso un file /etc/at.deny vuoto significa che ogni utente è autorizzato a pianificare lavori con at). Se nessuno di questi file esiste, l’accesso dell’utente alla pianificazione dei lavori at dipende dalla distribuzione usata.

Specifiche di Tempo

Puoi specificare quando eseguire un particolare lavoro at usando il formato HH:MM, opzionalmente seguito da AM o PM nel caso del formato a 12 ore. Se l’ora specificata è già passata, il lavoro si attiverà il giorno successivo. Se vuoi programmare una data particolare in cui il lavoro venga eseguito, devi aggiungere le informazioni sulla data dopo l’ora usando una delle seguenti forme: nome mese giorno del mese, nome mese giorno del mese anno, MMDDYY, MM/DD/YYY, DD.MM.YY e YYYY-MM-DD).

Sono accettate anche le seguenti parole chiave: midnight, noon, teatime (4 pm) e now seguita da un segno più (+) e un periodo di tempo (minuti, ore, giorni e settimane). Infine, puoi dire a at di eseguire il lavoro oggi o domani aggiungendo al tempo le parole today o tomorrow. Per esempio, puoi usare at 07:15 AM Jan 01 per eseguire un lavoro alle 07:15 del 01 Gennaio e at now +5 minutes per eseguire un lavoro tra cinque minuti. Puoi leggere il file timespec all’interno di /usr/share per maggiori informazioni sulla definizione esatta delle specifiche temporali.

Una Alternativa a at

Usando systemd come gestore del sistema e dei servizi, si possono anche programmare compiti una tantum con il comando systemd-run. È tipicamente usato per creare un’unità timer transitoria in modo che un comando venga eseguito in un momento specifico senza la necessità di creare un file di servizio. Per esempio, agendo come root, è possibile eseguire il comando date alle 11:30 AM del 2019/10/06 utilizzando quanto segue:

# systemd-run --on-calendar='2019-10-06 11:30' date

Se vuoi eseguire lo script foo.sh, situato nella tua directory di lavoro corrente dopo due minuti puoi usare:

# systemd-run --on-active="2m" ./foo.sh

Consulta le pagine del manuale per imparare tutti i possibili usi di systemd-run con systemd-run(1).

Note

Ricorda che i timer sono registrati nel journal di systemd e che puoi rivedere i log delle diverse unità usando il comando journalctl. Ricorda anche che, se stai agendo come utente ordinario, devi usare l’opzione --user dei comandi systemd-run e journalctl.

Esercizi Guidati

  1. Per ciascuna delle seguenti specifiche temporali, indicare quale è valida e quale non è valida per at:

    at 08:30 AM next week

    at midday

    at 01-01-2020 07:30 PM

    at 21:50 01.01.20

    at now +4 days

    at 10:15 PM 31/03/2021

    at tomorrow 08:30 AM

  2. Una volta che hai programmato un lavoro con at, come puoi rivedere i suoi comandi?

  3. Quali comandi puoi usare per rivedere i lavori at in sospeso? Quali comandi useresti per cancellarli?

  4. Con systemd, quale comando è usato come alternativa a at?

Esercizi Esplorativi

  1. Crea un lavoro at che esegua lo script foo.sh, situato nella tua home directory, alle 10:30 del 31 Ottobre prossimo. Supponiamo che tu stia agendo come un utente ordinario.

  2. Accedi al sistema come un altro utente ordinario e crea un altro lavoro at che esegua lo script bar.sh domani alle 10:00. Supponiamo che lo script si trovi nella home directory dell’utente.

  3. Accedi al sistema come un altro utente ordinario e crea un altro lavoro at che esegue lo script foobar.sh dopo 30 minuti. Supponiamo che lo script si trovi nella home directory dell’utente.

  4. Ora, come root, esegui il comando atq per esaminare i lavori programmati at di tutti gli utenti. Che cosa succede se un utente normale esegue questo comando?

  5. Come root, cancella tutti questi lavori in sospeso at con un solo comando.

  6. Esegui il comando ls -l /usr/bin/at ed esamina i suoi permessi.

Sommario

In questa lezione abbiamo imparato:

  • Usare at per eseguire lavori una tantum in un momento specifico.

  • Gestire i lavori at.

  • Configurare l’accesso degli utenti alla programmazione dei lavori at.

  • Usare systemd-run come alternativa a at.

I seguenti comandi e file sono stati discussi in questa lezione:

at

Esegue i comandi in un momento specifico.

atq

Elenca i lavori at in sospeso dell’utente, a meno che l’utente non sia il superutente.

atrm

Elimina i lavori at, identificati dal loro numero di lavoro.

/etc/at.allow and /etc/at.deny

File particolari usati per impostare le restrizioni at.

systemd-run

Crea e avvia un’unità transitoria timer come alternativa a at per la programmazione una tantum.

Risposte agli Esercizi Guidati

  1. Per ciascuna delle seguenti specifiche temporali, indicare quale è valida e quale non è valida per at:

    at 08:30 AM next week

    Valida

    at midday

    Non Valida

    at 01-01-2020 07:30 PM

    Non Valida

    at 21:50 01.01.20

    Valida

    at now +4 days

    Valida

    at 10:15 PM 31/03/2021

    Non Valida

    at tomorrow 08:30 AM monotonic

    Non Valida

  2. Una volta che hai programmato un lavoro con at, come puoi rivedere i suoi comandi?

    Puoi usare il comando at -c seguito dall’ID del lavoro di cui vuoi esaminare i comandi. Nota che l’output contiene anche la maggior parte dell’ambiente che era attivo nel momento in cui il lavoro è stato pianificato. Ricorda che root può esaminare i lavori di tutti gli utenti.

  3. Quali comandi puoi usare per rivedere i lavori at in sospeso? Quali comandi useresti per cancellarli?

    Puoi usare il comando at -l per rivedere i tuoi lavori in sospeso, e puoi usare il comando at -d per cancellare i tuoi lavori. at -l è un alias per atq e at -d è un alias per atrm. Ricorda che root può elencare e cancellare i lavori di tutti gli utenti.

  4. Con systemd, quale comando è usato come alternativa a at?

    Il comando systemd-run può essere usato come alternativa a at per programmare lavori una tantum. Per esempio, puoi usarlo per eseguire comandi in un momento specifico, definendo un calendar timer o un monotonic timer relativo a diversi punti di partenza.

Risposte agli Esercizi Esplorativi

  1. Crea un lavoro at che esegua lo script foo.sh, situato nella tua home directory, alle 10:30 del 31 Ottobre prossimo. Supponiamo che tu stia agendo come un utente ordinario.

    $ at 10:30 AM October 31
    warning: commands will be executed using /bin/sh
    at> ./foo.sh
    at> Ctrl+D
    job 50 at Thu Oct 31 10:30:00 2019
  2. Accedi al sistema come un altro utente ordinario e crea un altro lavoro at che esegue lo script bar.sh domani alle 10:00. Supponiamo che lo script si trovi nella home directory dell’utente.

    $ at 10:00 AM tomorrow
    warning: commands will be executed using /bin/sh
    at> ./bar.sh
    at> Ctrl+D
    job 51 at Sun Oct 6 10:00:00 2019
  3. Accedi al sistema come un altro utente ordinario e crea un altro lavoro at che esegue lo script foobar.sh dopo 30 minuti. Supponiamo che lo script si trovi nella home directory dell’utente.

    $ at now +30 minutes
    warning: commands will be executed using /bin/sh
    at> ./foobar.sh
    at> Ctrl+D
    job 52 at Sat Oct 5 10:19:00 2019
  4. Ora, come root, esegui il comando atq per esaminare i lavori programmati at di tutti gli utenti. Cosa succede se un utente normale esegue questo comando?

    # atq
    52      Sat Oct  5 10:19:00 2019 a dave
    50      Thu Oct 31 10:30:00 2019 a frank
    51      Sun Oct  6 10:00:00 2019 a emma

    Se si esegue il comando atq come root, vengono elencati tutti i lavori at pendenti di tutti gli utenti. Se lo esegui come utente ordinario, vengono elencati solo i tuoi lavori at in sospeso.

  5. Come root, cancella tutti questi lavori in sospeso at con un solo comando.

    # atrm 50 51 52
  6. Come root, esegui il comando ls -l /usr/bin/at ed esamina i suoi permessi.

    # ls -l /usr/bin/at
    -rwsr-sr-x 1 daemon daemon 43762 Dec  1  2015 /usr/bin/at

    In questa distribuzione, il comando at ha entrambi i bit SUID (il carattere s invece del flag eseguibile per il proprietario) e SGID (il carattere s invece del flag eseguibile per il gruppo) impostati, il che significa che viene eseguito con i privilegi del proprietario e del gruppo del file (daemon per entrambi). Questo è il motivo per cui gli utenti ordinari sono in grado di pianificare lavori con at.

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

Prossima Lezione

107.3 Localizzazione e internazionalizzazione (107.3 Lezione 1)

Leggi la prossima Lezione

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

LPI è una organizzazione non-profit.

© 2023 Linux Professional Institute (LPI) è lo standard di certificazione globale e l'organizzazione di supporto alla carriera per i Professionisti Open Source. Con più di 200,000 titolari di Certificazione, è il primo e il più grande ente di Certificazione Open Source e Linux vendor-neutral. LPI ha professionisti certificati in oltre 180 Paesi, offre i suoi Esami in più lingue e ha centinaia di Partner di formazione in tutto il mondo.

La nostra missione è promuovere l'uso dell'Open Source supportando le persone che vi lavorano.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contattaci
  • Privacy & Cookie Policy

Trovato un errore? Per favore scrivi a contattaci.

© 1999–2023 The Linux Professional Institute Inc. Tutti i diritti riservati.