Crontab не запускает скрипт python. Попробовал несколько исправлений. Новое в терминале, не беспокойтесь [закрыто]

Привет всем и спасибо за чтение, я буду обсуждать ниже.

У меня есть простой скрипт на Python, который выводит случайный факт из Reddit в терминал. Я тестирую воду терминала, пока изучаю Python.

Я пытался изменить свои права доступа к каталогу / usr / bin /. Безуспешно

Я создал новый реддит.py скрипт внутри каталога / usr / bin, поскольку я читал в другом месте, что crontab запускается только из своего домашнего каталога, и если оба пути указаны в файле crontab, это должно решить проблему его запуска. Опять безуспешно.

Я дал себе полные права на чтение, запись и выполнение для / кроме 'proc' и 'sys', которые были запрещены.

Он запустится, если я напишу путь в терминале и напечатаю случайный факт из TIL с reddit.

Не будет проходить через crontab, любая дополнительная информация, которую может предоставить кто-либо, будет принята с благодарностью, и если вы можете предоставить какие-либо упрощенные детали, поскольку я только начал с этого, и я медленно, но верно осваиваюсь. Еще раз большое спасибо. Ниже я предоставлю копию сценария.

Я использую Debian 10 на Chromebook AMD 64.

#! /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 часов, но безуспешно. Это помогает мне освоиться с окружающей средой и командами! Итак серебряные накладки =)

0
задан 20 June 2021 в 20:08

1 ответ

Крайне плохая идея изменять разрешения для / или / usr / bin или размещать файлы в этих каталогах. Если вы собираетесь установить такую ​​локальную программу на системном уровне, она должна находиться в / usr / local / bin

. Также нет необходимости делать это для выполнения того, что вы пытаетесь, это не обязательно в системном каталоге для запуска из cron, особенно из cron пользователя. Вы должны иметь возможность поместить этот файл в свой домашний каталог и просто указать полный путь к нему, как вы уже делаете в записи crontab.

Обычно cron отправляет вам сообщения об ошибках, когда что-то выходит из строя. Однако у вас может не быть установленной почты, и вы все равно отключаете ведение журнала ошибок с помощью > dev / null 2> & 1

. Скорее всего, если вы исправите эти вещи и зафиксируете ошибку, которая мешает запуску вашего скрипта, вы узнаете, в чем настоящая проблема. (Если вы не можете определить это по ошибкам, как только вы их получили, добавьте их в свой вопрос.)

1
ответ дан 28 July 2021 в 11:26

Другие вопросы по тегам:

Похожие вопросы: