【发布时间】:2013-06-26 19:17:46
【问题描述】:
我有一个 python 脚本,我想在 ubuntu ec2 实例上启动,但我遇到了麻烦。
脚本在一个循环中运行,并在它准备好时小心或退出,所以我不需要在它运行后启动或停止它。
我已经阅读并尝试了很多不同程度的成功方法,老实说,我对什么是最好的方法感到困惑。我尝试在 /etc/init.d 中放置一个启动 python 脚本的 shell 脚本,使其可执行并执行 update-rc.d 以尝试让它运行,但它在每个阶段都失败了。
这是我尝试过的脚本的内容:
#!/bin/bash
cd ~/Dropbox/Render\ Farm\ 1/appleseed/bin
while :
do
python ./watchfolder18.py -t ./appleseed.cli -u ec2 ../../data/
done
然后我做了
sudo chmod +x /etc/init.d/script_name
sudo sudo update-rc.d /etc/init.d/script_name defaults
这似乎没有在启动时运行,我不明白为什么,如果我手动运行该命令,它会按预期工作。
我也尝试在 rc.local 中添加一行来启动脚本,但这似乎也不起作用
任何人都可以分享他们发现的最简单的方法,即在启动 ec2 实例时使用参数在后台运行 python 脚本。
更新:----------
我已将此代码移至名为 /home/ubuntu/bin/watch_folder_start 的文件中
#!/bin/bash
cd /home/ubuntu/Dropbox/Render\ Farm\ 1/appleseed/bin
while :
do
python ./watchfolder18.py -t ./appleseed.cli -u ec2 ../../data/
done
并将我的rc.local 文件更改为:
nohup /home/ubuntu/bin/watch_folder_start &
exit 0
当我手动运行 rc.local 但不会在启动时触发时,我做了chmod +x rc.local 但这并没有改变任何东西,
【问题讨论】:
-
只是猜测:您的脚本会打印到终端吗?在这种情况下,它会死。将您的输出重定向到日志文件或类似的东西。
标签: python amazon-ec2 startup init.d