J'ai un programme qui imprime une sortie que j'aimerais faire apparaître sur mon terminal une fois toutes les heures pendant la journée de travail.
$ crontab -l
0 07-17 * * * /home/dat/scripts/cron.out
syslog signale ce qui suit:
(dat) CMD (/home/dat/scripts/cron.exe)
Jun 18 12:02:01 picard CRON[10848]: (CRON) info (No MTA installed, discarding output)
Qu'est-ce que je rate?
Réponses:
La mauvaise façon pourrait être de rediriger la sortie de votre programme vers le fichier pts d'un terminal déjà existant .
Pour connaître le fichier pts, il suffit de taper la
tty
commandealors votre crontab serait:
Une autre façon pourrait être de lancer le programme comme argument du terminal:
où
display
est l'affichage X où vous souhaitez afficher le terminal,-H
est de dire au terminal de rester ouvert une fois la commande terminée. Cela créera à chaque fois un nouveau terminal.crontab:
si l'affichage n'est pas présent, vous aurez une erreur enregistrée par syslog.
la source
Cron vous envoie par e-mail la sortie de votre script. Malheureusement, Ubuntu ne configure pas le courrier local par défaut , c'est pourquoi Cron vous dit dans les journaux «Aucun MTA installé, suppression de la sortie».
La configuration du courrier local peut être un moyen de résoudre votre problème. Au lieu d'une sortie dans un terminal, vous obtiendrez une notification par e-mail.
Si vous voulez que votre tâche cron soit sortie vers un terminal, vous devrez rediriger sa sortie vers le terminal. La partie redirection est facile -
mais le problème est de savoir vers quel terminal rediriger. Il n'y a pas de réponse universelle à cela, cela dépend de la façon dont vous souhaitez sélectionner le terminal parmi ceux auxquels vous êtes connecté.
Pour des utilisations typiques, une notification GUI serait plus appropriée. Vous pouvez utiliser
notify-send
. Vous devrez définir laDISPLAY
variable d'environnement .la source
Cron envoie la sortie à un expéditeur. Si vous voulez voir la sortie dans un terminal, vous pouvez vous connecter à un fichier et utiliser tail -f pour voir la sortie dans le terminal que vous voulez voir la sortie
Connectez-vous à un fichier
0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt
Autres façons de se connecter:
echo output > log.txt
ou vous pouvez utiliser un script wrapper décrit ci-dessous.Exemple de programme et de script wrapper:
Exemple d'exécution 1:
Exemple d'exécution 2:
Afficher la sortie dans le terminal:
Maintenant que vous vous déconnectez à la fois de la sortie standard et de l'erreur standard dans un fichier, dans n'importe quel terminal, vous pouvez exécuter
tail -f
un ou les deux fichiers commetail -f log.txt
outail -f log.txt error.txt
pour que queue surveille ou plutôt suive le ou les fichiers pour les modifications. page de manuel de queueFichiers journaux ajoutés ensuite:
Si log.txt ou error.txt sont ajoutés ultérieurement à partir de votre programme ou d'un autre terminal comme
$ echo "more output" >> log.txt
, la sortie est visible sur le terminal en cours d'exécution$ tail -f log.txt error.txt
De plus, cela se
$ echo code red >> error.txt
traduit par:la source