2009-07-10 9 views
3

J'ai un script et c'est la progression du téléchargement d'affichage d'affichage en écrivant à la même ligne de console. Lorsque le script est exécuté à partir d'une tâche cron, plutôt que d'écrire une seule ligne, je reçois beaucoup de lignes:Comment puis-je savoir si mon script est exécuté depuis un cronjob ou depuis la ligne de commande?

*** E0710091001.DAT *** [0.67%] 
*** E0710091001.DAT *** [1.33%] 
*** E0710091001.DAT *** [2.00%] 
*** E0710091001.DAT *** [2.66%] 
*** E0710091001.DAT *** [3.33%] 
*** E0710091001.DAT *** [3.99%] 
*** E0710091001.DAT *** [4.66%] 
*** E0710091001.DAT *** [5.32%] 
*** E0710091001.DAT *** [5.99%] 
*** E0710091001.DAT *** [6.65%] 
*** E0710091001.DAT *** [7.32%] 
*** E0710091001.DAT *** [7.98%] 
*** E0710091001.DAT *** [8.65%] 
*** E0710091001.DAT *** [9.32%] 
*** E0710091001.DAT *** [9.98%] 
*** E0710091001.DAT *** [10.65%] 
*** E0710091001.DAT *** [11.31%] 
*** E0710091001.DAT *** [11.98%] 
*** E0710091001.DAT *** [12.64%] 
*** E0710091001.DAT *** [13.31%] 
*** E0710091001.DAT *** [13.97%] 
*** E0710091001.DAT *** [14.64%] 
*** E0710091001.DAT *** [15.30%] 
*** E0710091001.DAT *** [15.97%] 
*** E0710091001.DAT *** [16.63%] 
*** E0710091001.DAT *** [17.30%] 
*** E0710091001.DAT *** [17.97%] 
*** E0710091001.DAT *** [18.63%] 

Je veux juste savoir si je peux dire à l'intérieur du script si elle est appelée à partir Cron, et si oui, je ne vais pas afficher cette sortie.

Répondre

6

Voir le code ci-dessous. Remplacer mes instructions d'impression avec ce que vous voulez montrer.

import sys 
if sys.stdout.isatty(): 
    print "Running from command line" 
else: 
    print "Running from cron" 
+0

cela va-t-il confondre les processus exécutés par des applications autres que cron avec les tâches cron? – Evgeny

+0

Techniquement ce que cela fait est de vérifier si stdout est attaché à un terminal ou non. Redirigé vers un fichier par exemple, ce que fera cron. Étant donné que la question de l'OP consistait à déterminer ce qu'il fallait imprimer, j'ai supposé qu'il est raisonnable de supposer que le comportement d'impression lors de la redirection vers un fichier est le même, qu'il soit initié par cron ou non. –

10

vous pourriez créer un drapeau. Peut-être non documenté que votre travail cron passerait à l'utilitaire pour structurer la sortie.

+0

doh. si facile ... – scottm

+0

Pas de soucis, nous arrive à tous. Heureux d'avoir pu aider. –

+0

C'est ce que je ferais. +1 – Triptych

2

Un moyen facile serait que le script prenne un argument qui signifie supprimer cette sortie, et fournisse cet argument lorsque vous l'appelez depuis cron.

9

Je vérifie sys.stderr.isatty() - de cette façon, vous évitez les sorties inutiles de «décoration» vers stderr quand elles ne sont pas immédiatement perceptibles par l'utilisateur.

Questions connexes