栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python脚本未在调用pysaunter的crontab中运行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python脚本未在调用pysaunter的crontab中运行

经过大量的试验和错误,并且在网上获得了许多很多stackoverflow.com文章和其他教程,并且在Perl脚本的帮助下,我发现它执行了类似的操作,因此我能够弄清楚要使此方法起作用需要做些什么。

以下是确保正确设置所有步骤的步骤:

  1. 确保在.profile或.bash_profile中的PYTHONPATH(在此处和此处,以及更多信息。请在此处)中具有所需的变量,以用于要在其中测试脚本的任何shell,以确保其有效。

  2. 编辑您的crontab,以在cron作业中包含运行脚本所需的目录(在此处和此处)。

一)一定要包括在PATH变量(。)作为解释的根目录在这里。基本上,如果您使用命令运行可执行文件,则它必须能够找到存储可执行文件的根目录或目录,以及以下可能的目录:(/ sbin:/ bin:/
usr / sbin:/ usr / bin)。

  1. 在您的crontab文件中,创建一个cronjob,它将当前目录更改为您之前成功运行脚本的目录(例如/ Users / user / documents / foo)。

a)如下所示:

    * * * * cd /Users/user/documents/foo; bar -l doSomething -v
  1. 由于我的问题专门针对调用可执行文件,因此有必要注意,有多种编写Python脚本来运行的方法(尽管在发现过程中,我了解到这适用于使用cron中的子进程进行的任何调用)。

第一种方法如下所示:

    ... #some script callsmy_env = os.environ.copy()my_env["PYTHONPATH"] = "{}:{}".format(os.environ["PATH"] ,"<path you want to include>")os.chdir("<path/to/desired/directory>")subprocess.Popen(<call_as_string>, env=my_env, shell=True)

第二个看起来像这样:

    ... #some script callsos.environ["PYTHONPATH"] = "{}:{}".format(os.environ["PATH"] ,"<path you want to include>")os.chdir("<path/to/desired/directory>")subprocess.Popen(<call_as_list_of_arguments)

由于可执行文件所需的路径包含在它被称为从壳佣工目录,这是必要的环境变量传递给可执行文件解释这里。不过,我发现,在环境中修改PATH变量不适用于cron作业,而设置PYTHONPATH则可以。我在这里读到,shell使用PATH变量仅查找可执行文件,因此对于cronjob中的新shell,您需要将其传递给PYTHONPATH来寻找新的Python模块。(这在Python文档中也有解释。)

问题中引用的子流程文档中说明了两种不同方法之间的差异,但是可以在此处找到有关此模块的很好的教程。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415801.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号