昨日投稿した別の質問で、Windows で Python スクリプトをサービスとして実行する方法について、非常に良いアドバイスをもらいました。私が疑問に思っているのは、ネイティブ ツール (「管理ツール」の「サービス」ウィンドウ) で管理できるサービスを Windows がどのように認識しているかということです。私はe。Linux で /etc/init.d に開始/停止スクリプトを配置するのと同等の Windows は何ですか?
4 に答える
レジストリを直接いじらないでください。SC コマンドライン ツールを使用します。つまり、SC CREATE
説明: SC は、 NT サービス コントローラとサービス。 利用方法: sc [コマンド] [サービス名] ... オプションの形式は「\\ServerName」です 「sc [コマンド]」と入力すると、コマンドに関する詳細なヘルプが表示されます。 コマンド: query-----------サービスのステータスを問い合わせる、または サービスの種類のステータスを列挙します。 queryex---------サービスの拡張ステータスを問い合わせる、または サービスの種類のステータスを列挙します。 start -----------サービスを開始します。 一時停止 ----------- サービスに一時停止制御要求を送信します。 尋問----- INTERROGATE 制御要求をサービスに送信します。 continue-------- CONTINUE 制御要求をサービスに送信します。 stop------------ サービスに STOP リクエストを送信します。 config---------サービスの構成を変更します (永続的)。 description-----サービスの説明を変更します。 失敗---------失敗時にサービスが実行するアクションを変更します。 qc-------------- サービスの構成情報を照会します。 qdescription----サービスの説明を照会します。 qfailure-------- 失敗時にサービスによって実行されるアクションを照会します。 delete---------サービスを (レジストリから) 削除します。 create--------- サービスを作成します。(レジストリに追加します)。 control--------- コントロールをサービスに送信します。 sdshow ----------サービスのセキュリティ記述子を表示します。 sdset-----------サービスのセキュリティ記述子を設定します。 GetDisplayName -- サービスの DisplayName を取得します。 GetKeyName------ サービスの ServiceKeyName を取得します。 EnumDepend------ サービスの依存関係を列挙します。 次のコマンドは、サービス名を必要としません。 sc boot------------(ok | bad) 最後のブートが必要かどうかを示します 前回正常起動時の構成として保存される Lock------------ サービス データベースをロックします QueryLock-------SCManager データベースの LockStatus を照会します 例: sc start MyService
これは、Pythonで書かれたサービスとしてpython-scriptをインストールするためのコードです:)
http://code.activestate.com/recipes/551780/
この投稿もあなたを助けることができます:
http://essiene.blogspot.com/2005/04/python-windows-services.html
Windows で最も「認識されている」ものと同様に、答えは「レジストリ」です。
次の Microsoft Knowledge Base 記事を参照してください: http://support.microsoft.com/kb/103000
「サービス コントローラによって開始でき、サービス コントロール プロトコルに従う Win32 プログラム」を検索します。気になるサービスはこんな感じです。
サービス登録 (KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \myservice の内容) は、実行可能な場所、失敗した場合の対処方法 (OS を停止しますか?)、このサービスの前に開始する必要があるサービスなど、サービスに関する情報を運びます。 、実行するユーザー。
サービス制御プロトコルに関しては、プログラムの main() は Windows API 呼び出しを呼び出し、サービスの開始、停止、一時停止のコールバックを設定することになっています。これらのコールバックで何をするかは、すべてあなた次第です。
Windows NT リソース キットの srvany.exe を使用して、管理ツールに表示されるユーザー定義サービスを作成できます...
http://support.microsoft.com/kb/137890
このメソッドを使用して、trac の tracd (Python スクリプト/サーバー) を実行しています。
ここにいくつかの非常に明確な指示があります: http://www.tacktech.com/display.cfm?ttid=197
いくつかのレジストリ編集が必要ですが (非常に最小限で簡単です)、コマンド ライン/スクリプトを Windows サービスにすることができます。