0

我有一个 ec2 实例并创建了 2 个 python 文件,我想在实例启动时运行它们。这些文件被调用config.py 并且start_elastic.py位于 /home/ubuntu/ 中。

我尝试了几个选项来启动它(使用 systemd,在 init.d 中定位它等),但没有任何效果。现在有人告诉我,要走的路是使用 crontab。所以我做了以下事情:

sudo crontab -e

@reboot . /home/ubuntu/config.py
@reboot . /home/ubuntu/start_elastic.py

不幸的是,什么也没有发生。这些文件是可执行的 ( chmod +x filename)。有谁知道为什么它不起作用?

python 文件看起来像这样:

#!/usr/bin/python3
import os
import yaml
from requests import get
import socket

hostname = socket.gethostname()
private = socket.gethostbyname(hostname)
public = get('https://api.ipify.org').text and so on
4

1 回答 1

1

.(如单点符号,后跟空格)在 shell 中等同于source命令,所以基本上你试图将 python 脚本中的每一行作为 shell 命令执行,这当然不是你想做的事情。

chmod +x假设已设置,执行脚本的正确方法是

@reboot /home/ubuntu/config.py
@reboot /home/ubuntu/start_elastic.py

但是,为了清楚起见,我建议在 cronjob 中明确声明解释器,就像这样

@reboot /usr/bin/python3 /home/ubuntu/config.py
@reboot /usr/bin/python3 /home/ubuntu/start_elastic.py
于 2020-10-28T14:44:00.763 回答