【问题标题】:Python cron job: /usr/local/bin: bad interpreter: Permission deniedPython cron 作业:/usr/local/bin:错误的解释器:权限被拒绝
【发布时间】:2015-12-19 15:25:45
【问题描述】:

我在 CentOS VPS 中设置了以下 crontab:

SHELL=/bin/bash
HOME=/

* * * * * /root/ebay/findcheapitems.py

脚本使用手动运行良好:

python2.7 ebay/findcheapitems.py

已经通过dos2unix运行EOL转换,有-rwxr-xr-x权限,文件第一行有:

#!/usr/local/bin python2.7

但是每次 cron 作业尝试运行时我都会收到邮件,说:

/bin/bash: /root/ebay/findcheapitems.py: /usr/local/bin: bad interpreter: Permission denied

我已经使用 'which' 确认了 python2.7 的位置:

# which python2.7
/usr/local/bin/python2.7

我是一个 linux 初学者,所以我确定我错过了一些简单的东西!

【问题讨论】:

标签: python linux cron


【解决方案1】:

您需要将文件路径指定为一个路径,而不是目录和文件名:

#!/usr/local/bin/python2.7

否则,目录路径被视为可执行文件。

更新正如 Kevin Guan 所建议的,您也可以使用 /usr/bin/env 而不是指定可执行文件的完整路径。

#!/usr/bin/env python2.7

【讨论】:

  • 另外我建议使用#!/usr/bin/env python2.7,因为它可以搜索PATH并运行python2.7。
  • @KevinGuan,感谢您的评论。我更新了答案以包含它。
  • 为什么linux可以找到确切的位置,即使你只是给一个虚拟路径/usr/bin/env?
  • @cloudscomputes, /usr/bin/env 不是虚拟路径;这是一个名为env 的程序的路径。 unix.stackexchange.com/q/29608/81068
  • 好的,知道了,谢谢
【解决方案2】:

使用

#!/usr/local/bin/python2.7

而不是#!/usr/local/bin python2.7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多