【发布时间】:2019-08-19 13:40:03
【问题描述】:
这是我的 cron 任务。
0 1 * * * sleep $(( RANDOM \%59 ))m && /usr/bin/python3 /root/email.py
还有 email.py。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import time
import smtplib,ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
jobTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
def Email(time):
port = 465
smtp_server = "smtp.gmail.com"
sender_email = "xxxx@gmail.com"
receiver_email = "yyyy@gmail.com"
password = "zzzz"
message = MIMEMultipart("alternative")
message["Subject"] = "{}".format(result)
message["From"] = sender_email
message["To"] = receiver_email
text = "send email at {}".format(time)
part = MIMEText(text, "plain")
message.attach(part)
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", port, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
Email("success at {}".format(jobTime))
我想在 1 点到 2 点之间随机发送电子邮件。
连续6天,我发现邮件中的时间总是01:00:01或01:00:02,似乎sleep $(( RANDOM \%59 ))m没有阻止/usr/bin/python3 /root/email.py执行,/usr/bin/python3 /root/email.py在sleep命令完成之前执行。
【问题讨论】:
-
你的 cron 使用哪个 shell (sh/dash/bash)?
-
不应该在你的 cron 文件中使用
/bin/sleep吗?