Crontab 没有运行 python 脚本 尝试了多种修复方法 新手对终端很友好

Crontab 没有运行 python 脚本 尝试了多种修复方法 新手对终端很友好

大家好,感谢您的阅读,我将在下面进行讨论。

我有一个简单的 python 脚本,可以将来自 reddit 的随机事实打印到终端中,我在学习 python 的同时测试终端的使用。

我尝试更改我的权限以访问 /usr/bin/ 目录。没有成功

我在 /usr/bin 目录中生成了一个新的 reddit.py 脚本,因为我在其他地方读到 crontab 只从其主目录运行,如果 crontab 文件中给出了两个路径,这应该可以解决其运行的问题。但还是没有成功。

我授予了自己对 / 的完全读取、写入和执行权限,但“proc”和“sys”除外,因为它们被拒绝。

如果我在终端中写入路径,它就会运行并从 reddit 的 TIL 中打印一个随机事实。

不会通过 crontab 运行,任何人提供的任何进一步信息都将不胜感激,如果您可以提供任何简化的细节,因为我才刚刚开始,我正在慢慢但稳步地掌握事情的窍门。再次感谢。我将在下面提供一份脚本副本。

我在 AMD 64 chromebook 上运行 Debian 10。

#! /usr/bin/env python
import requests
import json 
 
subreddit = 'todayilearned'
count = 1
timeframe = 'day' #hour, day, week, month, year, all
listing = 'random' # controversial, best, hot, new, random, rising, top
 
def get_reddit(subreddit,count):
    try:
        base_url = f'https://www.reddit.com/r/{subreddit}/{listing}.json?count={count}&t={timeframe}'
        request = requests.get(base_url, headers = {'User-agent': 'yourbot'})
    except:
        print('An Error Occured')
    return request.json()
 
top_post = get_reddit(subreddit,count)
 
if listing != 'random':
    title = top_post['data']['children'][0]['data']['title']
    url = top_post['data']['children'][0]['data']['url']
else:
    title = top_post[0]['data']['children'][0]['data']['title']
    url = top_post[0]['data']['children'][0]['data']['url']
 
 
print(f'{title}\n{url}')

Crontab 文件:

*/5 * * * * /usr/bin/python /usr/bin/reddit.py >dev/null 2>&1

谢谢,我已经尝试解决这个问题 12 个小时了,但仍然没有成功。不过,它帮助我熟悉了环境和命令!所以有一线希望 =)

答案1

更改 / 或 /usr/bin 的权限或将文件放入这些目录中是非常糟糕的主意。如果您要在系统级别安装这样的本地程序,则应将其放入 /usr/local/bin

完成您要尝试的操作也没有必要这样做,它不必位于系统目录中才能从 cron 运行,尤其是用户的 cron。您应该能够将此文件放在您的主目录中,只需提供它的完整路径,就像您已经在 crontab 条目中所做的那样。

通常,当出现故障时,cron 会向您发送错误邮件。但是,您可能没有安装邮件,并且您正在禁用任何错误日志记录,方法是:>dev/null 2>&1

最有可能的是,如果您修复了这些问题并捕获了阻止脚本运行的错误,您就会发现真正的问题是什么。(如果您在收到错误后无法找出原因,请将其添加到您的问题中。)

相关内容