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番出口
;;
エサック
: