python脚本共享目录,通过update-rd.c添加到启动,挂起启动

时间:2013-01-03 20:36:41

标签: python simplehttpserver

好的,我搜索得很高,找到了我的谜题,但没有解决方案。

我想通过http共享一个目录,而不必担心apache等.python是最简单的答案。所以我把简单的脚本放在一起(称为tftp-www.py):

#!/usr/bin/env python
import SimpleHTTPServer
import SocketServer
import os
os.chdir("/var/lib/tftproot")
PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "Server running on port ", PORT
httpd.serve_forever()

chmod到755,运行它,它完美无缺,无论我从哪里运行它。 现在我希望在任何人登录之前在启动时运行,因此将始终共享此目录。 因此,我将文件复制到/etc/init.d并根据如何将脚本添加到启动的说明运行以下内容:

update-rc.d -f tftp-www.py start 99 2 3 4 5 .

此时我重新启动测试,服务器(Ubuntu 10.10)在启动过程中挂起。一旦我进入恢复模式并删除了脚本

update-rc.d -f tftp-www.py remove

服务器正常启动。

那么,我做错了什么? 谢谢!

1 个答案:

答案 0 :(得分:1)

Debian / ubuntu样式update-rc.d和启动脚本是真正为shell脚本设计的,需要元数据部分:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.local
# Required-Start:    $remote_fs
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO

看看/etc/init.d/skeleton(至少在Debian上,不确定Ubuntu)。为您的程序创建shell启动脚本,然后在do_start()函数中运行它。