Python 尽管有 crontab,但脚本不会在 AWS 服务器重启时启动
Python scripts don't start on AWS server reboot despite crontab
我有一个 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
.
(如单点符号,后跟 space)在 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
我有一个 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
.
(如单点符号,后跟 space)在 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