Python脚本不';在AWS服务器重新启动时无法启动
我有一个ec2实例并创建了2个python文件,我希望在实例启动时运行这些文件。这些文件名为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
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。所以至少我现在有了一个解决问题的办法。