cygrunsrv
DESC
UNIX デーモンプログラムを
NT/2000/XP 上のサービスとして動作させるための
サービススタータプログラム
サービス制御.コマンドラインMode
システムレジストリへの
サービスのインストールや削除をします
インストール済みのサービスの
起動と停止もできる
サービスの実行.デーモン化
Windows のサービス制御マネージャから呼び出される
特殊なエントリポイントからのみ実行されます
( 実装すべき関数があるということ )
コマンドラインから cygrunsrv をこのモードで動作させることは出来ません
「デーモン化」モードでは
cygrunsrv は(「コマンドライン」モードで指定されたフラグに従って)環境を設定します
cygrunsrv はターゲットとなるサービスが cygwin1.dll を簡単に見つけ出すことが出来るように
「/bin」を PATH の先頭に追加します
(必要であれば)cygrunsrv は
標準出力、標準入力、標準エラー出力をログファイルや
NT/W2K イベントログにリダイレクトします(イベントログへのアクセスはまだ実装されていません
cygrunsrv はターゲットとなるデーモンを起動します
いろいろやってみた
// -p で実行する Service( Pro ) を指定
// -a "foobar" で Service にわたす Arg を指定
cygrunsrv -I foo -p /usr/bin/bash -a "foo.sh"
// Service が起動したときの ENV を指定する
cygrunsrv -I foo -p /usr/bin/bar -e HOME=/e/services -e TMP=/var/tmp
;; sshd.exe を Service として登録する
cygrunsrv -I sshd -d "CYGWIN sshd" -p /usr/sbin/sshd -a "-D" -e "CYGWIN=ntsec"
ひさびさにはいってみた
;; cygwin にある ssh client を使う
ssh localhost
xxx@localhost's password xxx
// netstat -n とすると sshd, ssh がつながっているのがわかります
TCP 127.0.0.1:2263 127.0.0.1:23 ESTABLISHED
Command.一覧
http://www.sixnine.net/cygwin/translation/software/cygrunsrv.html(cygrunsrv)
POINT
"サービス" を見ながら確認するとわかりやすいです
// 大文字, 小文字あります
// install する
cygrunsrv --install cron --path /usr/sbin/cron --args -D -e "PATH=/work/shellscript"
// "cron" という service 名で /usr/sbin/cron.exe を登録
cygrunsrv -I cron -u xxx -w "xxx" --path /usr/sbin/cron --args -D -e "PATH=$PATH"
cygrunsrv -R cron
cygrunsrv -I cron -p /usr/sbin/cron --args -D -e "PATH=$PATH;d:/cygwin/bin"
cygrunsrv -I cron -p /usr/sbin/cron --args -D -e "PATH=$PATH"
cygrunsrv -I cron -p /usr/sbin/cron --args -D
cygrunsrv -I sshd -p /usr/sbin/sshd --args -D -e "PATH=$PATH"
* Warning: User mode mounts detected.
This will likely cause the service to fail to start.
You must have system mode mounts
* in order to run services. Re-run setup and choose 'All Users'
* or consult the FAQ for more information.
// Service を開始する
cygrunsrv --start cron
cygrunsrv -S cron
// Service をとめる
cygrunsrv --stop cron
cygrunsrv -E cron
// 動作しているかチェック
cygrunsrv --query cron
cygrunsrv -Q cron
// Uninstall する ( Service 一覧から消えます )
// ( Service 名の指定は -I xxx の名前で )
cygrunsrv --remove cron
cygrunsrv -R cron
// Help をみる
cygrunsrv -h
// ユーザ「xxx」アカウントとして動作するサービス sshd をインストールする
cygrunsrv -I "xxx sshd" -p /usr/sbin/sshd -a '-D' -u xxx -w privy23
Option
http://www.amy.hi-ho.ne.jp/tachibana/cygwin/cron.html
/// 指定した.PATH.をとおすには
-e PATH=$PATH:/work/shellscript
/// log を見るには
/// Optional output file used for stdout redirection. Default is /var/log/<svc_name>.log.
// stdout へ出力を見るには