【问题标题】:How to correctly execute a python script on the server?如何在服务器上正确执行 python 脚本?
【发布时间】:2014-10-13 18:16:37
【问题描述】:

我正在尝试在服务器上执行我的 python 脚本。我使用允许我执行 cronjobs 的托管公司。当我尝试让服务器执行该文件时,我总是收到此错误:

command /homez.208/thomasdewh/www/denshi/denshi.py must be executable
-- 2014-10-13 10:28:02.687788 exitcode: 255

所以我发现我必须使用 sheban 告诉服务器这个文件可以执行。 所以我补充说:

#!/www/python/python
import zipfile
import os.path
import os
import sys
...rest of script...

我将它上传到文件中,并通过 FTP 将 C:\Users\my-computer\python27\ 中的所有文件添加到我的网络服务器上的文件夹 /www/python/python 中。

但这似乎仍然不起作用..有人知道我做错了什么吗?

【问题讨论】:

  • 你的服务器运行linux吗??
  • 你试过了吗:chmod u+x denshi.py
  • 这似乎更像是服务器配置问题而不是编程问题。我不认为这是一个 ServerFault 问题,而可能是一个 SuperUser 问题,或者是 Unix 特定站点之一?
  • 仅供参考,您当然是在 unix 共享服务器上,只需阅读您在问题中粘贴的行,我就知道了。您不需要要求新的 unix 服务器,您只需要按照我的回答中提到的那样设置适当的权限。这真的很简单。
  • 我认为我的服务器不能在 linux 上运行,它是一个基本的共享服务器。这是否意味着我必须获得新的主机并要求使用 unix 服务器?或者我可以在我的普通服务器中执行那个 python 文件吗?

标签: python executable cron-task shebang


【解决方案1】:

在 unix 系统上,为了使脚本在被调用时能够运行,需要考虑两件事:

  1. 文件顶部的shebang #!...,这只是告诉shell它是从哪个shell执行的,在执行期间要使用哪个解释器
  2. 确保文件对需要运行它的人具有可执行权限:如果 is 是当前用户,则 chmod u+x ,如果它必须是给定组的任何成员:chmod g+x ,如果没有人:chmod a+x

当你这样做时:ls -l,你的文件可能是这样的:

-rw-r--r--  1 apero  staff  0 Oct 14 00:04 script.py

如果你设置 u+x (你可能必须做的事情)它变成:

-rwxr--r--  1 apero  staff  0 Oct 14 00:04 script.py

如果你设置 g+x 它变成:

-rw-r-xr--  1 apero  staff  0 Oct 14 00:04 script.py

如果你设置 a+x:

-rwxr-xr-x  1 apero  staff  0 Oct 14 00:04 script.py

对于写权限也可以这样做(w 代替 x),要删除一些权限,也可以这样做,但使用 - 而不是 +。 但是,尽量不要使用“a”或“0”,因为它授予每个人对该文件的权限(读取、写入或执行)。顺便说一句,谁会写,谁就可以删除,所以要小心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2018-09-03
    相关资源
    最近更新 更多