我有几个基于Python的服务器,我需要运行,并希望他们启动我的Ubuntu服务器框时自动启动。 执行它们的最好方法是什么?
我希望我可以写一个Bash脚本,并使用Screen来让它们在后台运行,我可以随时查看它们,但是在哪里
echo screen -d -m python
工作得很好,
echo screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`
不,没有错误信息。 这与空间有关吗? 即使我用反引号包围了它? 我也试过:
WEB="screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`" echo $WEB
作为逃避空间的一种方式,但没有运气。 什么是Bash脚本的方式来做到这一点?
而且,一旦Bash脚本工作,我可以把它放在启动时执行?
它的失败,因为sudo
提示input密码。 由于没有TTY开放,它只是在等待你进入一个 – 或者可能,实际上,立即失败。 如果你以root身份运行它,你不需要像sudo一样启动它。
然而,你可能想要做的是改变tornadoDeploy.py来守护自身 – 也就是分离自己,这样它就不会以打开的会话运行。 python-daemonize库提供了简单的工具来允许你这样做。 这消除了不得不处理屏幕,同时仍然允许你守护进程。
放
sudo -n python /home/matt/tornadoServer/tornadoDeploy.py &
进入文件/etc/rc.d/rc.local。 或者等同于你的发行。
假设你的脚本是一个行为良好的守护进程,并且你已经设置了sudo,不需要密码来运行你的脚本。
阅读关于启动脚本和关于python守护进程库的信息。 另外,你不需要在真正的http服务器后面运行龙卷风吗?
Ubuntu(和Debian)在启动时启动应用程序的方法是使用update-rc.d将其转换为系统服务 – 请参阅此处的说明: http : //www.debuntu.org/how-to-manage -Services与-更新的rc.d
请记住,以root身份运行的任何内容都是潜在的安全漏洞,尤其是在其他用户可以修改的情况下。
如果你从rc.local运行它,你还需要编辑/ etc / sudoers并注释这个string:
默认值requiretty