mod / assign / feedback / editpdf / testunoconv / initd
debian上のunoconvのinitスクリプト例
このスクリプトは/etc/init.d/unoconvdにインストールしてから、次のコマンドでシステムの起動にリンクさせることができます。
sudo update-rc.d unoconvdのデフォルト
ここで説明されているようにリモートアクセスのためにunoconvサービスを行うことを計画しているなら、それはデフォルトでlocalhostインターフェースでlistenしていることに注意してください。別のネットワークインタフェースでリッスンするようにするには、以下の内容で/ etc / default / unoconvを作成し、DAEMON_ARGS変数を上書きする必要があります(複数のネットワークインタフェースがある場合は特定のIPを使用します。それら):
#引数を上書きして、unoconvがネットワークインターフェースをリスンするようにします。 DAEMON_ARGS = " - リスナー-s 0.0.0.0"
"sudo service unoconvd start"を何度も実行しても安全なので、これをrootのcrontabに追加することもお勧めします(プロセスが実行中かどうかを確認し、必要に応じて起動します)。
5分ごとにプロセスをチェックして開始するためのCrontabエントリ。このバージョンでは、unoconvが再起動されるとメッセージが表示され、電子メールがcronによって送信されます。
* / 5 * * * * / usr / bin / service unoconvdステータス> / dev / null || (/ usr / bin / service unoconvd start && echo "再起動クラッシュしたunoconvリスナー")
これがスクリプトです。
#! / bin / sh ### BEGIN INIT情報 #提供:unoconvd #必須 - 開始:$ remote_fs $ syslog #必須 - 停止:$ remote_fs $ syslog #デフォルト - 開始:2 3 4 5 #デフォルト停止:0 1 6 #簡単な説明:unoconvdリスナー用の起動スクリプト #説明:unoconvdリスナー用の起動スクリプト。 unoconvdリスナーの起動/停止/再起動およびステータスの確認を許可します。 ### END INIT情報 #作者:Damyon Wiese <damyon@moodle.com> # "set -e"しないでください #PATHは、/ usr / *をmountnfs.shスクリプトの後に実行する場合にのみ含める必要があります。 パス= / sbin:/ usr / sbin:/ bin:/ usr / bin DESC = "ドキュメント変換用のUnoconvリスナー" NAME = unoconv DAEMON = / usr / bin / $ NAME DAEMON_ARGS = " - リスナー" PIDFILE = / var / run / $ NAME.pid SCRIPTNAME = / etc / init.d / $ NAME APACHEUSER = www-data #パッケージがインストールされていない場合は終了します [-x "$ DAEMON"] || 0番出口 #設定変数ファイルが存在する場合はそれを読み込む [-r / etc / default / $ NAME] &&。 / etc / default / $ NAME #VERBOSE設定と他のrcS変数をロードする 。 /lib/init/vars.sh #LSB log_ *関数を定義します。 #このファイルが存在することを確認するためにlsb-base(> = 3.2-14)に依存 #とstatus_of_procは機能しています。 。 / lib / lsb / init-functions # #デーモン/サービスを起動する機能 # do_start() { #戻る デーモンが起動されている場合#0 デーモンがすでに実行されている場合は#1 #2デーモンが起動できなかった場合 start-stop-daemon --start --quiet --make-pidfile --background --pidfile $ PIDFILE --exec $ DAEMON --chuid $ APACHEUSER --test> / dev / null \ || 1を返す status_of_proc "$ DAEMON" "$ NAME"> / dev / null RETVAL = "$?" ["$ RETVAL" = 3] && start-stop-daemon --start --quiet --make-pidfile --background --pidfile $ PIDFILE --exec $ DAEMON --chuid $ APACHEUSER - \ $ DAEMON_ARGS \ || 2を返す #必要に応じて、プロセスの準備が整うのを待つコードをここに追加します。 #その後に開始されたサービスからの要求を処理する これで#。最後の手段として、しばらくの間眠ります。 } # #デーモン/サービスを停止する機能 # do_stop() { #戻る デーモンが停止している場合は0 デーモンがすでに停止している場合は#1 #2デーモンが停止できなかった場合 #障害が発生した場合はその他 start-stop-daemon --stop --quiet --retry = TERM / 30 / KILL / 5 --pidfile $ PIDFILE --name $ NAME RETVAL = "$?" ["$ RETVAL" = 2] && return 2 #これがフォークするデーモンである場合は、子供たちも終了するのを待ちます。 #そしてデーモンがこのinitscriptから実行されるだけの場合。 #上記の条件が満たされない場合は、他のコードを追加してください。 #プロセスが、実行される可能性のあるすべてのリソースを削除するのを待ちます。 サービスが必要とする#は、その後開始されます。最後の手段は #しばらく寝ます。 start-stop-daemon --stop --quiet --oknodo --retry = 0/30 / KILL / 5 --exec $ DAEMON ["$?" = 2] && return 2 #多くのデーモンは、終了時にpidファイルを削除しません。 rm -f $ PIDFILE / usr / bin / killall /usr/lib/libreoffice/program/soffice.bin "$ RETVAL"を返す } # #SIGHUPをデーモン/サービスに送信する機能 # do_reload(){ # #デーモンがなしで設定をリロードできる場合 #再起動中(SIGHUPが送信されたときなど) #それからそれをここで実装する。 # start-stop-daemon --stop --signal 1 --quiet --pidfile $ PIDFILE --name $ NAME 0を返す } 「$ 1」の場合 開始) ["$ VERBOSE"!= no] && log_daemon_msg "$ DESCの開始" "$ NAME" do_start "$?"の場合に 0 | 1)["$ VERBOSE"!= no] && log_end_msg 0 ;; 2)["$ VERBOSE"!= no] && log_end_msg 1 ;; エサック ;; やめる) ["$ VERBOSE"!= no] && log_daemon_msg "$ DESCの停止" "$ NAME" do_stop "$?"の場合に 0 | 1)["$ VERBOSE"!= no] && log_end_msg 0 ;; 2)["$ VERBOSE"!= no] && log_end_msg 1 ;; エサック ;; 状態) status_of_proc "$ DAEMON" "$ NAME" &&終了0 || $を終了しますか? ;; #reload | force-reload) # #do_reload()が実装されていない場合は、これをコメントアウトしたままにしてください。 #そして 'force-reload'を 'restart'のエイリアスとして残します。 # #log_daemon_msg "$ DESCのリロード" "$ NAME" #do_reload #log_end_msg $? #;; 再起動|強制リロード) # # "reload"オプションが実装されている場合は、それを削除します。 # 'force-reload'エイリアス # log_daemon_msg "$ DESCの再起動" "$ NAME" do_stop "$?"の場合に 0 | 1) do_start "$?"の場合に 0)log_end_msg 0 ;; 1)log_end_msg 1 ;; #古いプロセスはまだ実行中です *)log_end_msg 1 ;; # 起動に失敗しました エサック ;; *) #停止に失敗しました log_end_msg 1 ;; エサック ;; *) #echo "使用方法:$ SCRIPTNAME {start | stop | restart | reload | force-reload}">&2 echo "使用方法:$ SCRIPTNAME {start | stop | status | restart | force-reload}">&2 3番出口 ;; エサック :