<p>第一次使用AWS/EC2/ubuntu。我在使用crontab的ubuntu服务器上运行python脚本(web scraper,使用chromedriver、selenium、beautifulsoup等)时遇到了一个问题。这是AWS上的EC2实例。
我让crontab做一个简单的测试,创建一个简单的txt文件,上面写着“hello”。但是,当前的cronjob不断失败:</p>
<p>很简单,每天中午12:17执行一个脚本:</p>
<pre><code> ubuntu@ip-172-31-31-200:~$ crontab -l
17 12 * * * python3 BandsInTown_Scraper_SF.py
</code></pre>
<p>作业不执行。我的crontab状态为:</p>
<pre><code> ubuntu@ip-172-31-31-200:~$ sudo service cron status
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-11-02 00:18:36 UTC; 1 weeks 0 days ago
Docs: man:cron(8)
Main PID: 830 (cron)
Tasks: 1 (limit: 1152)
CGroup: /system.slice/cron.service
└─830 /usr/sbin/cron -f
Nov 09 16:17:01 ip-172-31-31-200 CRON[27857]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov 09 16:17:01 ip-172-31-31-200 CRON[27858]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Nov 09 16:17:01 ip-172-31-31-200 CRON[27857]: pam_unix(cron:session): session closed for user root
Nov 09 17:17:01 ip-172-31-31-200 CRON[27908]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov 09 17:17:01 ip-172-31-31-200 CRON[27909]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Nov 09 17:17:01 ip-172-31-31-200 CRON[27908]: pam_unix(cron:session): session closed for user root
Nov 09 18:15:01 ip-172-31-31-200 cron[830]: (ubuntu) RELOAD (crontabs/ubuntu)
Nov 09 18:17:01 ip-172-31-31-200 CRON[28242]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov 09 18:17:01 ip-172-31-31-200 CRON[28243]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Nov 09 18:17:01 ip-172-31-31-200 CRON[28242]: pam_unix(cron:session): session closed for user root
</code></pre>
<p>而且,当我深入查看过去失败的cron作业的日志时,我得到:</p>
<pre><code> Nov 5 02:17:01 ip-172-31-31-200 CRON[14524]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Nov 5 02:26:58 ip-172-31-31-200 systemd[1]: Starting Message of the Day...
Nov 5 02:26:58 ip-172-31-31-200 50-motd-news[14532]: * Kata Containers are now fully integrated in Charmed Kubernetes 1.16!
Nov 5 02:26:58 ip-172-31-31-200 50-motd-news[14532]: Yes, charms take the Krazy out of K8s Kata Kluster Konstruction.
Nov 5 02:26:58 ip-172-31-31-200 50-motd-news[14532]: https://ubuntu.com/kubernetes/docs/release-notes
Nov 5 02:26:58 ip-172-31-31-200 systemd[1]: Started Message of the Day.
Nov 5 02:36:28 ip-172-31-31-200 systemd-timesyncd[577]: Network configuration changed, trying to establish connection.
Nov 5 02:36:28 ip-172-31-31-200 systemd-timesyncd[577]: Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com).
Nov 5 03:06:28 ip-172-31-31-200 systemd-timesyncd[577]: Network configuration changed, trying to establish connection.
Nov 5 03:06:28 ip-172-31-31-200 systemd-timesyncd[577]: Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com).
Nov 5 03:17:01 ip-172-31-31-200 CRON[14621]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Nov 5 03:36:28 ip-172-31-31-200 systemd-timesyncd[577]: Network configuration changed, trying to establish connection.
Nov 5 03:36:28 ip-172-31-31-200 systemd-timesyncd[577]: Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com).
Nov 5 03:39:01 ip-172-31-31-200 CRON[14646]: (root) CMD ( test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Nov 5 04:06:27 ip-172-31-31-200 systemd-timesyncd[577]: Network configuration changed, trying to establish connection.
Nov 5 04:06:27 ip-172-31-31-200 systemd-timesyncd[577]: Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com).
Nov 5 04:17:01 ip-172-31-31-200 CRON[14675]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Nov 5 04:27:25 ip-172-31-31-200 systemd[1]: Started Session 144 of user ubuntu.
Nov 5 04:36:27 ip-172-31-31-200 systemd-timesyncd[577]: Network configuration changed, trying to establish connection.
Nov 5 04:36:27 ip-172-31-31-200 systemd-timesyncd[577]: Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com).
Nov 5 04:41:04 ip-172-31-31-200 systemd[1]: Started Session 145 of user ubuntu.
Nov 5 04:41:09 ip-172-31-31-200 crontab[14897]: (ubuntu) LIST (ubuntu)
</code></pre>
<p>第<code>Network configuration changed, trying to establish connection.</code>行关注并怀疑这是否是造成这种情况的根本原因。为了让crontab正常工作,ubuntu服务器需要启动并运行吗?我这样问是因为当我在终端上登录到ubuntu,然后让它运行一段时间,我的电脑进入睡眠状态时,我得到以下错误:</p>
<pre><code>ubuntu@ip-172-31-31-200:~/bandsintown$ packet_write_wait: Connection to 3.132.213.71: Broken pipe
</code></pre>
<p>这是我问题的根本原因吗?我认为在AWS上运行代码的全部意义在于它可以独立于我的本地机器运行(例如,如果互联网断开,如果终端从ubuntu注销,等等),非常感谢任何帮助!你知道吗</p>