我已经看到了很多用于在Linux中守护python脚本的脚本,但没有太多有关如何使用它们的信息。 任何人都可以指导我呢?
我现在有一个冗长的python脚本,它监听传入消息的套接字,如果它是正确的格式接受它,然后将其存储到数据库中。 脚本本身只是打开套接字,然后听一段时间(这是工作!),并在那里做所有的工作。
为了守护它,我将不得不修改我当前的脚本或从一个单独的脚本调用它? 我见过两个例子,但都没有工作。
另外,我正在使用virtualenv这可能是我的问题的根源,任何暗示使用这个守护进程的脚本?
创建一个激活虚拟环境的shell脚本,并在后台运行你的Python脚本。
另外,在虚拟环境中应该有一个python模块,您可以从中导入和激活环境。 我目前没有virtualenv的工作,所以我不能检查它在哪里,而是在虚拟环境中搜索activate
(或类似的东西),你应该找到它。
编辑:添加了一个最小的Debian init.d脚本
计算机启动时启动守护进程所需的绝对最小脚本是:
#!/bin/sh /path/to/program &
&
使程序在后台运行,所以它不会停止启动过程的其余部分。
要获得更完整的脚本,请复制/etc/init.d/skeleton
并编辑新文件。 编辑的重要部分是开始处的块(在### BEGIN INIT INFO
和### END INIT INFO
,由update-rc.d
程序使用)以及NAME
, DAEMON
和DAEMON_ARGS
变量。 希望这应该是制作启动脚本所需要的一切。
像这样激活脚本:
sudo update-rc.d <name of script> defaults sudo update-rc.d <name of script> enable
并启动它:
sudo update-rc.d <name of script> start
<name of script>
就是名字,而不是完整的路径。
script export PYTHONPATH=.:/home/ubuntu/.local/lib/python2.7/site-packages/:/home/ubuntu/python/lib/python2.7/site-packages/ exec start-stop-daemon --start --chuid ubuntu --exec /home/ubuntu/python_envs/MyProj/bin/python /home/ubuntu/www/MyProj/MyProj.py -- --config-file-dir=/home/ubuntu/www/MyProj/config/ >> /home/ubuntu/startup.log 2>&1 & end script
当你需要在python virtualenv中运行一个应用程序时,你可以'激活'virtualenv,或者使用那个环境的独特的python
命令。
根据网站“如果你从virtualenv的bin /目录(例如path / to / env / bin / pip或/ path / to / env / bin / python script.py)直接运行脚本或python解释器,则不需要激活“。 – http://pypi.python.org/pypi/virtualenv
我也有一些从源代码编译的Python模块。 那些需要在PYTHONPATH环境变量中。 这可能是你的virtualenv激活的一部分,用virtualwrapper完成,或者明确地调用(如下所示)。
从UPSTART工作调用程序也可以。 我的例子是上面。
在Amazon EC2上的Ubuntu 10.10实例上,我更喜欢start-stop-daemon命令。 我还与其他一些新贵“节”斗争。 我正在调用一个特定的virtualenv和一些参数我的执行程序的Python应用程序。