一尘不染

如何让CRON调用正确的PATH

linux

我试图让cron调用正确的PATH。当我从外壳运行Python脚本时,脚本运行良好,因为它使用了bashrc中设置的PATH,但是当我使用cron时,bashrc中并未使用所有PATH。是否有一个文件可以像bashrc一样输入cron的PATH或从bashrc调用PATH的方法?

抱歉,我的措词不正确,我可以运行正确的脚本(这意味着crontab中脚本的PATH不是这里的问题),只是该脚本在运行时,我运行了构建,并且使用了在中设置的路径.bashrc。当我登录后运行脚本时,将.bashrc拉入PATH。由于cron并未在shell中运行,所以说它不会拉入.bashrc。有没有一种方法可以不必编写bash脚本包装器而将其引入?


阅读 330

收藏
2020-06-02

共1个答案

一尘不染

我用过/etc/crontab。我使用vi并在该文件中输入了所需的PATH,然后以root身份运行它。普通的crontab会覆盖您设置的PATH。关于如何执行此操作的很好的教程

系统范围的cron文件如下所示:

This has the username field, as used by /etc/crontab.
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user   command
42 6 * * *   root    run-parts --report /etc/cron.daily
47 6 * * 7   root    run-parts --report /etc/cron.weekly
52 6 1 * *   root    run-parts --report /etc/cron.monthly
01 01 * * 1-5 root python /path/to/file.py
2020-06-02