2 votes

Question sur l'at

J'ai essayé d'utiliser at pour planifier l'exécution d'un travail à une heure précise. J'ai un ordinateur Mac. Par exemple, j'ai essayé de tester cela en saisissant l'at suivant dans Terminal :

at now + 1 minute
echo 'Test at'
<EOD>

après plus d'une minute, je n'ai pas vu l'écho sortir. Après avoir tapé la commande suivante :

at -l

Je n'ai pas vu d'offres d'emploi, mais j'ai reçu un message disant que j'avais un courrier. Je suis allé dans ma commande de courrier par courrier. J'ai vu un message et j'ai tapé 1. J'ai vu que la sortie de mon travail est dans le courrier.

Ma première question est que je ne suis pas sûr que ce soit le comportement par défaut pour la commande ou non. Existe-t-il un moyen de modifier ce comportement et de diriger le résultat vers un endroit précis si possible ?

Si j'ai bien compris, si ma tâche planifiée contient un message, le message de sortie sera renvoyé à ma messagerie. Ma prochaine question est que je ne suis pas sûr de l'endroit où le travail planifié s'exécute ? En arrière-plan ? Je n'ai pas pu le trouver en utilisant la commande fg ou bg.

4voto

Oui, l'envoi de courrier à l'utilisateur qui a invoqué la commande at est le comportement par défaut.

Extrait de la page de manuel at :

Puisque les commandes s'exécutent dans une invocation Shell séparée, s'exécutant dans un groupe de processus séparé sans terminal de contrôle, les descripteurs de fichiers ouverts, les pièges et la priorité hérités de l'environnement d'invocation sont perdus.

En conséquence de ce qui précède, il n'y a pas de moyen facile de communiquer la sortie des commandes. Vous pouvez bien sûr rediriger la sortie vers un fichier, ou utiliser un autre mécanisme pour communiquer la sortie, dans le cadre des commandes.

Si vous ne voyez pas la tâche planifiée, c'est parce qu'il y a un démon atd qui tourne sur le système et qui reçoit et exécute les tâches. Sur un Mac, ceux-ci peuvent être gérés par le programme lancé sur le marché qui est le démon de remplacement tout-en-un d'Apple :

Le démon launchd remplace essentiellement init, rc, les scripts init.d et rc.d, SystemStarter (Mac OS X), inetd et xinetd, atd, crond et watchdogd. Apple a déclaré qu'elle avait l'intention d'éliminer tous les services susmentionnés au profit de launchd.

3voto

ssollinger Points 233

C'est en effet le comportement par défaut de à l'adresse comme indiqué dans homme à :

L'utilisateur recevra l'erreur standard et la sortie standard de ses commandes, le cas échéant. Le courrier sera envoyé en utilisant la commande sendmail(8). Si at est exécuté depuis un su(1) Shell, le propriétaire du login Shell recevra le courrier.

Pour un comportement différent, vous pouvez invoquer à l'adresse comme ça :

$ at now + 1 minute 
$ echo "test at" > /dev/ttys000
$ <EOD>

Ce qui va rediriger STDOUT vers le terminal ttys000. Vous devez remplacer /dev/ttys000 avec le fichier de périphérique correspondant de votre terminal, que vous pouvez déterminer en exécutant la commande suivante :

$ tty

Les travaux planifiés sont exécutés dans leur propre Shell (cf. homme à pour plus de détails), de sorte que bg ne les répertorie pas. Pour voir la liste des travaux planifiés, vous pouvez essayer les méthodes suivantes atq o à -l

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X