检测是否从控制台或crontab运行python脚本

Mar*_*óth 13 python bash crontab environment-variables

想象一下,脚本在这两组"条件"中运行:

  1. 实际行动,成立 sudo crontab
  2. 调试,当我从控制台运行它 ./my-script.py

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

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

感谢您的时间.

Fré*_*idi 33

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

import sys, os
if os.isatty(sys.stdin.fileno()):
    # Debug mode.
    pass
else:
    # Cron mode.
    pass
Run Code Online (Sandbox Code Playgroud)


Sim*_*one 6

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

crontab的配置文件:

CRONTAB=true

# run five minutes after midnight, every day
5 0 * * *        /path/to/your/pythonscript
Run Code Online (Sandbox Code Playgroud)

Python代码:

import os

if os.getenv('CRONTAB') == 'true':
   # do your crontab things
else:
   # do your debug things
Run Code Online (Sandbox Code Playgroud)