首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测python脚本是从控制台运行还是由crontab运行

检测python脚本是从控制台运行还是由crontab运行
EN

Stack Overflow用户
提问于 2010-11-18 09:01:51
回答 3查看 5K关注 0票数 16

假设脚本在这2组“条件”中运行:

  1. 实战,在sudo crontab中设置
  2. 调试时,当我从控制台./my-script.py运行它时

我想要实现的是自动检测“调试模式”,而不需要为脚本指定参数(例如--debug)。

有关于如何做到这一点的约定吗?是否有一个变量可以告诉我脚本所有者是谁?脚本是否在stdout上有一个控制台?运行一个ps | grep来确定这一点?

谢谢您抽时间见我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-18 09:05:42

由于sys.stdin将是调试模式下的TTY,所以可以使用os.isatty()函数:

代码语言:javascript
复制
import sys, os
if os.isatty(sys.stdin.fileno()):
    # Debug mode.
    pass
else:
    # Cron mode.
    pass
票数 37
EN

Stack Overflow用户

发布于 2010-11-18 09:31:49

您可以向crontab行添加一个环境变量,并在python应用程序中检查是否设置了环境变量。

crontab的配置文件:

代码语言:javascript
复制
CRONTAB=true

# run five minutes after midnight, every day
5 0 * * *        /path/to/your/pythonscript

Python代码:

代码语言:javascript
复制
import os

if os.getenv('CRONTAB') == 'true':
   # do your crontab things
else:
   # do your debug things
票数 9
EN

Stack Overflow用户

发布于 2010-11-18 09:32:51

使用只有cron才会使用的命令行选项。

或者一个符号链接,以便在cron调用时给脚本一个不同的名称。然后可以使用sys.argv[0]区分调用脚本的两种方式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4213091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档