Нужно ли вызывать Python в скрипте задания cron?

Я пытаюсь запустить задание cron с домашнего сервера, на котором работает Ubuntu 24/7, используя скрипт Python очистить удаленный почтовый ящик.

В папке «scripts» в моей домашней папке я поместил скрипт Python, garbage.py.

Я сделал его исполняемым:

chmod +x garbage.py 

Сценарий ( с именем пользователя и паролем, обновленными до реального имени пользователя и пароля):

#!/bin/env python3

import imaplib
import ssl
from datetime import datetime
# your IMAP server credentials
IMAP_HOST = 'mail.us.opalstack.com'
IMAP_USER = 'mail_username'
IMAP_PASS = 'mail_password'
def clear_old_messages():

today = datetime.today().strftime('%d-%b-%Y')

ctx = ssl.create_default_context()
server = imaplib.IMAP4_SSL(host=IMAP_HOST, ssl_context=ctx)
server.login(IMAP_USER, IMAP_PASS)
server.select()

resp, items = server.search(None, f"SENTBEFORE {today}")
items = items[0].split()
for i in items:
    server.store(i, '+FLAGS', '\\Deleted')

server.expunge()
    server.logout()
if __name__ == '__main__':
    clear_old_messages()

Я открыл crontab в Ubuntu с помощью

crontab -e

и добавил

0 1 * * * /home/[user]/scripts/garbage.py

Я немного запутался в том, что не работает. Нужно ли вызывать Python в задаче cron, даже если она вызывается в верхней части скрипта? Или я что-то упускаю?

0
задан 25 July 2020 в 16:26

1 ответ

Famous mistake with cron : there is no env :: Edit the shebang #!/bin/env python3 with the full path of python 3 binary. Find it with whereis python3

The shebang could be something like #!/usr/bin/python3.7

OR you can also call the python binary in the crontab file

0 1 * * * /usr/bin/python3.7  /home/[user]/scripts/garbage.py 
1
ответ дан 30 July 2020 в 22:03

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

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