Как я могу узнать, выполняется ли мой скрипт из cronjob или из командной строки? - PullRequest
3 голосов
/ 10 июля 2009

У меня есть скрипт, и он показывает прогресс загрузки шоу, записывая в ту же консольную строку. Когда скрипт запускается из задания cron, а не записывается в одну строку, я получаю много строк:

***   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%]

Я просто хочу знать, смогу ли я узнать из скрипта, вызывается ли он из cron, и если да, я не буду отображать этот вывод.

Ответы [ 5 ]

10 голосов
/ 10 июля 2009

вы можете создать флаг. Возможно, недокументировано, что ваша задача cron будет передана утилите для структурирования вывода.

9 голосов
/ 10 июля 2009

Я бы проверил sys.stderr.isatty() - таким образом вы избежите бесполезного вывода «украшения» в stderr, если он все равно не будет сразу воспринят пользователем.

8 голосов
/ 10 июля 2009

См. Код ниже. Замените мои печатные заявления тем, что вы хотите показать.

import sys
if sys.stdout.isatty():
    print "Running from command line"
else:
    print "Running from cron"
6 голосов
/ 10 июля 2009

Вы хотите проверить, находитесь ли вы в терминале или нет. Смотрите этот вопрос переполнения стека: Как определить, работает ли мой сценарий оболочки через канал?

2 голосов
/ 10 июля 2009

Самый простой способ - заставить скрипт принять аргумент, который означает подавить этот вывод, и предоставить этот аргумент, когда вы вызываете его из cron.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...