我有一个触发 Python 脚本的 cronjob。每次运行时,Python 脚本都会创建一个新的日志文件,并将其执行的操作写入这些文件。它还会将数据以 .json 格式转储到特定目录中。当我列出与 Python 脚本关联的文件和文件夹(包括它需要写入的目录)时,我可以看到我的用户帐户是所有者。cronjob 也归我所有,因为它是我的用户帐户 crontab。cronjob 运行正常,但它不会创建或写入日志文件或 .json 文件。我怀疑这是一个权限问题。所有文件的 chmod 都是 775。我不想将其设置为 777,因为这是一个安全风险。
我在本地机器上运行了 python 脚本几个星期,一切运行正常。只有在服务器上才会出现问题。我在服务器上的帐户是 sudo 帐户,所以我不确定问题是什么。这是一台 ubuntu 服务器。有人遇到过这个问题并推荐一种无需创建目录 777 的修复方法吗?
答案1
我搞明白了。这与权限无关,而是与文件路径有关。从命令行手动运行脚本时,在 python 脚本中指定文件或目录的相对路径是可行的。但是,当使用 Cron 运行时,这似乎不起作用。一旦我修改了代码,将相对文件路径更改为绝对文件路径,脚本就能够创建和修改文件和目录。
我会把这个留在这里以防其他人遇到类似的问题。