我正在尝试在服务器上安装新的cron任务。我可以通过命令行运行该进程,但不能通过cron运行它。这是因为当通过cron运行任务时,PATH和PYTHONPATH的环境变量未正确设置。 (我实际上在服务器上的所有cron作业都遇到了这个问题,但为了简单起见,我在这个问题上专注于一个过程。)
以下是该流程的cron条目:
### procmon NLite ###
*/2 * * * * . ~/.bashrc; cd /var/networkip/nlite/proc_mon; . bashrc; cd bin; ./proc_mon.py > /dev/null 2>&1
现在,proc_mon目录中的bashrc包含:
BASEDIR=$PWD
KODIAK_ROOT=$BASEDIR/
BASEPATH=$KODIAK_ROOT
pathadd PYTHONPATH ${BASEDIR}/lib
因此,当运行cron任务时 - 应该重置PYTHONPATH ,但这不会发生。
还有其他几台旧服务器通过cron成功运行这些过程 到目前为止尝试的解决方案:
我不感兴趣的解决方案:
更多信息:
由于crons能够在其他服务器上运行,因此必须有一个合理的解决方案。我也是超级用户,所以如果问题更适合该平台,请告诉我。
答案 0 :(得分:1)
您需要在export
中bashrc
变量才能让python进程看到它们:
BASEDIR=$PWD
export KODIAK_ROOT=$BASEDIR/
export BASEPATH=$KODIAK_ROOT
pathadd PYTHONPATH ${BASEDIR}/lib
export PYTHONPATH