大家好,感谢您的阅读,我将在下面进行讨论。
我有一个简单的 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
最有可能的是,如果您修复了这些问题并捕获了阻止脚本运行的错误,您就会发现真正的问题是什么。(如果您在收到错误后无法找出原因,请将其添加到您的问题中。)