我需要在 cron 作业脚本中调用 Python 吗?

我需要在 cron 作业脚本中调用 Python 吗?

我正在尝试从运行 Ubuntu 24/7的家庭服务器运行 cron 作业,并使用 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()

我在 Ubuntu 中打开了 crontab

crontab -e

并添加

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

我有点困惑,不知道到底是哪里出了问题。我是否需要在 cron 任务中调用 Python,即使它是在脚本顶部调用的?还是我遗漏了什么?

答案1

cron 的一个著名错误:没有 env ::#!/bin/env python3使用 python 3 二进制文件的完整路径编辑 shebang。使用以下命令找到它whereis python3

事情可能像这样#!/usr/bin/python3.7

或者你也可以在 crontab 文件中调用 python 二进制文件

0 1 * * * /usr/bin/python3.7  /home/[user]/scripts/garbage.py 

相关内容