假设脚本在这2组“条件”中运行:
sudo crontab中设置./my-script.py运行它时我想要实现的是自动检测“调试模式”,而不需要为脚本指定参数(例如--debug)。
有关于如何做到这一点的约定吗?是否有一个变量可以告诉我脚本所有者是谁?脚本是否在stdout上有一个控制台?运行一个ps | grep来确定这一点?
谢谢您抽时间见我。
发布于 2010-11-18 09:05:42
由于sys.stdin将是调试模式下的TTY,所以可以使用os.isatty()函数:
import sys, os
if os.isatty(sys.stdin.fileno()):
# Debug mode.
pass
else:
# Cron mode.
pass发布于 2010-11-18 09:31:49
您可以向crontab行添加一个环境变量,并在python应用程序中检查是否设置了环境变量。
crontab的配置文件:
CRONTAB=true
# run five minutes after midnight, every day
5 0 * * * /path/to/your/pythonscript
Python代码:
import os
if os.getenv('CRONTAB') == 'true':
# do your crontab things
else:
# do your debug things发布于 2010-11-18 09:32:51
使用只有cron才会使用的命令行选项。
或者一个符号链接,以便在cron调用时给脚本一个不同的名称。然后可以使用sys.argv[0]区分调用脚本的两种方式。
https://stackoverflow.com/questions/4213091
复制相似问题