2

OK、高低を検索し、パズルのピースを見つけましたが、解決策はありません.

Apache などを気にせずに http 経由でディレクトリを共有したいのですが、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()

755 に chmod して実行すると、どこから実行しても完全に動作します。これを起動時に、誰かがログインする前に実行したいので、このディレクトリは常に共有されます。そのため、ファイルを /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

サーバーは正常に起動しました。

それで、私は何を間違っていますか?ありがとう!

4

1 に答える 1

1

Debian / ubuntuスタイルの更新-rc.dおよび起動スクリプトは実際にはシェルスクリプト用に設計されており、メタデータセクションが必要です。

#! /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についてはわかりません)。プログラムのシェル起動スクリプトを作成し、do_start()関数で実行します。

于 2013-01-18T18:12:14.943 に答える