Come impedire ad atd di eseguire lavori precedenti?


9

Il demone at è un ottimo strumento! Tuttavia, se un lavoro è programmato per le 8:00 e la macchina è spenta in quel momento, at eseguirà il lavoro ogni volta che la macchina viene avviata. Quello che vorrei fare è interrompere l'esecuzione del lavoro se il tempo è passato. Ho cercato le pagine man e online, ma o non c'è una risposta o non sono riuscito a trovarne una. Sto usando Arch, ma per quanto ne so è molto simile tra le distribuzioni.

Ogni aiuto è molto apprezzato!

Risposte:


7

Quando un lavoro diventa un lavoro passato? Se si accende il sistema alle 7:59:50 e il atdaemon inizia alle 8:00:01, il lavoro dovrebbe essere eseguito? Cosa succede se il demone inizia alle 7:59:59 ma impiega due secondi per leggere tutti i suoi file?

Tu decidi! Inizia il tuo lavoro con un controllo del tempo e interrompi se il tempo è passato.

export execute_by_date=$(date +%s 'tomorrow 8:01')
at tomorrow 8:00
[ "$(date +%s)" -le "$execute_by_date" ] || exit
do_stuff
␄

2

È possibile scrivere uno script di inizializzazione che annulla tutti i processi at sheduled allo spegnimento o al riavvio.

Non sono sicuro di Arch-Linux - c'è /etc/sysconfig/atqualcosa o qualcosa di simile? Forse è solo un interruttore di configurazione che devi capovolgere ...


Penso che questa sia la soluzione migliore, svuota la atcoda all'avvio prima di atavviarla.
Bahamat,

Questo è esattamente ciò che mi aspetto sarebbe / dovrebbe essere possibile! Sfortunatamente non c'è alcuna /etc/sysconfig/directory in Arch ... E nessuno dei file elencati nelle pagine man sono file di configurazione.
Elmer,

@Elmer Ho appena cercato su Google un po 'e letto su Arch Linux. '/etc/rc.d/atd' sembra essere lo script di script per il demone at lì. Dai un'occhiata lì se riesci a vederlo mentre analizza alcuni file di configurazione. Se non sei fortunato, devi scegliere il tuo script init (ad esempio, chiamalo atcleared eseguilo prima atd).
Nils,

2

Il mio voto è per il crondemone.

Se è necessario eseguirlo in momenti specifici della giornata, ma non alla stessa ora ogni giorno, creerei un crontab con un intervallo di voci al giorno con un tempo di esecuzione specifico:

Alcuni esempi presi da crontab(5):

# run five minutes after midnight, every day
5 0 * * *       command
# run at 2:15pm on the first of every month
15 14 1 * *     command
# run at 10 pm on weekdays
0 22 * * 1-5    command

0

Quello che vuoi è il demone cron. Fa esattamente quello che vuoi.

Alimenta il tuo motore di ricerca preferito per cron demone e hai un sacco di manuali e istruzioni. man croned man crontabè anche utile.


Grazie per l'aiuto, ma cron non funziona per il mio problema. Ho bisogno di uno script eseguito in momenti specifici della giornata, ma non alla stessa ora ogni giorno.
Elmer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.