Python脚本不';在AWS服务器重新启动时无法启动

Python脚本不';在AWS服务器重新启动时无法启动,python,bash,shell,cron,autostart,Python,Bash,Shell,Cron,Autostart,我有一个ec2实例并创建了2个python文件,我希望在实例启动时运行这些文件。这些文件名为config.py和start\u elastic.py,位于/home/ubuntu/ 我尝试了几个选项来启动它(使用systemd,在init.d中定位它等等),但没有任何效果。现在有人告诉我,要走的路是使用crontab。因此,我做了以下工作: sudo crontab -e @reboot . /home/ubuntu/config.py @reboot . /home/ubuntu/start

我有一个ec2实例并创建了2个python文件,我希望在实例启动时运行这些文件。这些文件名为
config.py
start\u elastic.py
,位于/home/ubuntu/

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

sudo crontab -e

@reboot . /home/ubuntu/config.py
@reboot . /home/ubuntu/start_elastic.py
不幸的是什么也没发生。这些文件是可执行的(
chmod+x文件名
)。有人知道它为什么不起作用吗

例如,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
shell中的
(如单点符号,后跟空格)相当于
源代码
命令,因此基本上您试图将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

将输出重定向到日志文件,查看cron作业运行时发生的情况。谢谢,我发现了问题:我无法从根目录运行elasticsearch。所以至少我现在有了一个解决问题的办法。