Comment empêcher atd d'exécuter des tâches antérieures?

9

Le démon at est un excellent outil! Cependant, si un travail est planifié à 8h00 et que la machine est arrêtée à ce moment-là, at exécutera le travail à chaque démarrage de la machine. Ce que je voudrais faire, c'est l'empêcher d'exécuter le travail si le temps est écoulé. J'ai cherché dans les pages de manuel et en ligne, mais soit il n'y a pas de réponse, soit je n'en ai pas trouvé. J'utilise Arch, mais pour autant que je sache, il est très similaire entre les distributions.

Toute aide est très appréciée!

Elmer
la source

Réponses:

7

Quand un emploi devient-il un emploi passé? Si vous allumez le système à 7:59:50 et que le atdémon démarre à 8:00:01, le travail doit-il être exécuté? Que faire si le démon démarre à 7:59:59 mais prend deux secondes pour lire tous ses fichiers?

Tu décides! Commencez votre travail avec une vérification du temps et abandonnez si le temps est écoulé.

export execute_by_date=$(date +%s 'tomorrow 8:01')
at tomorrow 8:00
[ "$(date +%s)" -le "$execute_by_date" ] || exit
do_stuff
␄
Gilles 'SO- arrête d'être méchant'
la source
2

Vous pouvez écrire un script init qui annule tous les travaux en cours à l'arrêt ou au redémarrage.

Je ne suis pas sûr de Arch-Linux - y a-t-il un /etc/sysconfig/atou quelque chose de similaire? C'est peut-être juste un commutateur de configuration que vous devez retourner ...

Nils
la source
Je pense que c'est la meilleure solution, videz la atfile d'attente au démarrage avant de atdémarrer.
bahamat
C'est exactement ce que j'attends serait / devrait être possible! Malheureusement, il n'y a aucun /etc/sysconfig/répertoire dans Arch ... Et aucun des fichiers répertoriés dans les pages de manuel n'est un fichier de configuration.
Elmer
@Elmer Je viens de googler un peu et j'ai lu sur arch linux. '/etc/rc.d/atd' semble être le script init pour le démon at. Jetez-y un œil si vous pouvez le voir analyser un fichier de configuration. Si vous n'êtes pas chanceux, vous devez opter pour votre propre script d'initialisation (par exemple, nommez-le atclearet exécutez-le avant atd).
Nils
2

Mon vote est pour le crondémon.

Si vous avez besoin de l'exécuter à des heures spécifiques de la journée, mais pas à la même heure chaque jour, je créerais une crontab avec une entrée par plage de jours avec une heure d'exécution spécifique:

Quelques exemples tirés de 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
rpet
la source
0

Ce que vous voulez, c'est le démon cron. Il fait exactement ce que vous voulez.

Nourrissez votre moteur de recherche préféré pour le démon cron et vous avez un tas de manuels et d'instructions. man cronet man crontabest également utile.

Marco
la source
Merci pour l'aide, mais cron ne fonctionne pas pour mon problème. J'ai besoin d'un script exécuté à des moments précis de la journée, mais pas à la même heure chaque jour.
Elmer