使用“service”样式命令在Ubuntu中的后台运行IPython Notebook服务器

时间:2014-03-12 13:37:50

标签: ubuntu ipython daemon background-process ipython-notebook

我在我的机器上设置了IPython Notebook(在virtualenv中)。我已经设置了一个适合我需要的配置文件(称为myserver)。现在,我执行以下命令启动服务器:

cd path/to/folder/containing/virtualenv
source virtualenvfolder/bin/activate
ipython notebook --profile=myserver

我想在后台运行相同的流程,并且我希望按照我在Ubuntu安装中管理其他内容的方式管理它...使用sudo service ngninx start之类的命令或sudo service uwsgi restartsudo service lightdm stop。即我希望能够输入sudo service myipythonserver start|stop|restart并使其按预期方式运行。

四个问题。

  1. 拨打sudo service something action时使用的框架名称是什么?那是Supervisor吗?别的什么?
  2. 无论该框架被称为什么,我如何创建一个新的""它管理?用户拥有以这种方式启动的进程的用户,以及如何管理后台进程的文件权限(等)?
  3. 一旦我创造了新的"命令" (现在它可以输入sudo service myipythonserver start|stop|restart),如何设置它以便在系统启动时自动启动进程?
  4. 有没有办法控制其中一个后台进程占用的系统资源量?例如,如果我想限制我的IPython服务器使用不超过3GB的RAM,那可能吗?不超过CPU的50%?

1 个答案:

答案 0 :(得分:1)

我能够使用Ubuntu附带的upstart来完成这项工作。要使用upstart创建作业,请在.conf中创建/etc/init文件。没有.conf的文件名是服务的名称。这是我创建的文件:

exec sudo /usr/local/bin/ipython notebook --notebook-dir=/your/notebook/path   
start on filesystem and net-device-up IFACE!=lo 

第一行包含ipython二进制文件的路径,--notebook-dir包含我的笔记本存储位置的路径。可以使用iPython Profile指定更详细的配置。 Upstart系统文件可以包含scripts,可以激活您的virtualenv。

当有可用的文件系统和网络接口时,第二行启动iPython。可以使用sudo start ipythonsudo stop ipython手动启动和停止该服务。