我已经试着调试这个有一段时间了,我觉得我什么都试过了。你知道吗
由于公司原因,代码稍微修改为***。你知道吗
当以本地用户身份从会话运行时,以下命令将按预期执行。你知道吗
/var/www/****/***/run.sh path_to_my/script.py 2>&1 >> /var/www/****/***/test.log
在哪里运行.sh只是在virtualenv中运行Python的包装器:
#!/usr/bin/env bash
wd=$(dirname $0)
source ${wd}/virtualenv/bin/activate
python ${wd}/$1
我在Python main中放置了一个print语句来显示它正在被执行。你知道吗
if __name__ == "__main__":
print("I got in here...")
以本地用户身份运行命令时,日志将包含此打印语句。但是,在cron中运行时:
*/30 * * * * /var/www/****/***/run.sh path_to_my/script.py 2>&1 >> /var/www/****/***/test.log
我没有得到任何打印的语句,也没有从2>&1
接收到任何错误输出。你知道吗
我对.sh和.py脚本的权限都是755。你知道吗
除了通过cron运行外,其他一切都按预期工作。你知道吗
我错过什么了吗?cron不为crontab用户使用.bashrc吗?你知道吗
首先确保您的本地cronjob正在运行,方法是将以下内容放入crontab文件中,并检查它是否在/tmp中写入/环境输出一两分钟后
其次,确保运行crontab的用户有权写入/var/www/****/***/测试日志文件
第三,尝试将脚本更改为
编辑:Anders通过在cron环境中添加PYTHONPATH,能够自己找出答案:
export PYTHONPATH="${PYTHONPATH}:${wd}"
相关问题 更多 >
编程相关推荐