创建自己的Linux Service
写程序经常会遇到这样的问题,怎么能让自己的程序开机自动运行,能像管理系统的服务那样来管理自己的程序。比如想要运行程序直接#在这里输入代码(从下一行开始,不要删除我...)
service myweb start想要关闭程序就直接#在这里输入代码(从下一行开始,不要删除我...)
service myweb stop这就要把自己的程序创建成一个LInux service 了。有几种不同的系统用来实现这个目的,然后ubuntu用的就是upstart,这个真的非常好用。创建过程
首先在 /etc/init/ 文件夹内创建一个×××.conf的配置文件, ×××就是你自己的服务的名称。以后的指令都和这个相关。以创建一个goagent的service为例,我们首先创建goagent.conf文件。文件的基本内容如下
#在这里输入代码(从下一行开始,不要删除我...)
# simple service script
description "goagnet service daemon"
start on runlevel [2345]
stop on runlevel [06]
exec /home/randoms/tools/goagent-3.0/local/proxy.py
以#开头的是注释可以不用管它,首先description就是这个服务的介绍。start on就是服务的启动条件, 后面runlevel[2345], 就是说在系统在 runlevel 是2或3或4或5的时候启动,具体是什么时候,可以自己看看runlevel的wiki http://en.wikipedia.org/wiki/Runlevel.
stop on就是服务的关闭条件。
一般来说这个start on和stop on都是不变的。
exec这一行就是就是最关键的部分了。把服务的启动指令写在这个。
这个样写完之后直接运行。来个运行的截图。

更多设置 http://upstart.ubuntu.com/wiki/Stanzas, 不过据说这里有些内容过期了。
需要注意的地方
在我用这种方式管理我的网站的时候,发现了几个需要注意的地方,这里也说一下。也许对遇到同样情况的人有所帮助。
1.当前路径的问题
如果你的程序里面用了相对路径,那么就要在服务的配置里面加上chdir参数。这个的作用和cd差不多,用来变更当前路径
2.virtualenv
如果是python程序而且用了virtualenv怎么办呢,可以用下面的指令
#在这里输入代码(从下一行开始,不要删除我...)
. path/to/activate最前面是个点,具体为什么我没有仔细看,反正好使。stack overflow上面有解释。3.encoding error
出现和encoding相关的错误需要在服务设置里面定义语言相关的环境变量
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'4.日志
程序的日志在什么地方呢,所有按照这种方法创建的服务日志都在/var/log/upstart/xxx.log 里面。xxx就是自己创建的服务的名字。所有程序原来的终端的输出都会被记录到日志文件内。