web-dev-qa-db-fra.com

Comment rediriger la sortie du travail cron vers stdout

J'ai un travail cron et sa sortie est maintenant redirigée dans un fichier. Il ressemble à ce qui suit

0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log

Quelqu'un peut-il m'aider à redéfinir sa sortie sur stdout? 

14
shafeeq

Entrez tty sur n’importe quel terminal et nous obtiendrons un fichier de périphérique pour cette fenêtre de référence particulière, tel que /dev/pts/1. Redirige la tâche cron dans ce fichier en tant que cleanup.sh > /dev/pts/1

2
achoora

Le processus en cours a un PID et son fd (descripteur de fichier) est en correspondance avec /proc/<PID>/fd. Et nous pouvons trouver le PID du processus cron en cours d'exécution à /var/run/crond.pid.

Pour envoyer le journal cron à stdout, nous pourrions écrire le journal dans le numéro 1 du processus démarré par cron.

0 9 * * * /bin/sh /bin/cleanup.sh > /proc/$(cat /var/run/crond.pid)/fd/1 2>&1
26
gaga5lala

Exécutez cat /home/darkknight/cleanup.log pour obtenir la sortie sur STDOUT . Si vous ne pouvez pas voir ce que vous attendez en tant que sortie, vous devrez peut-être modifier le cron comme suit:

0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log 2>&1

Pour obtenir ce que cleanup.sh écrit sur son STDERR.

Si vous ne voulez pas perdre la sortie d'hier, modifiez comme suit:

0 9 * * * /bin/sh /bin/cleanup.sh >> /home/darkknight/cleanup.log 2>&1

Ou alors, exécutez simplement /bin/sh /bin/cleanup.sh et vous obtenez à la fois STDOUT et STDERR sur votre terminal.

1
YASUTAKE Kiyoshi