4

いくつかのデーモンを開始するために使用している init.d スクリプトがいくつかあります。インターネットで見つけたこれらのスクリプトのほとんどは、すべて start-stop-daemon を使用しています。私の理解では、「start-stop-daemon」は Linux または BSD ディストリビューションに固有のコマンドであり、Solaris では使用できません。

init.d スクリプトを Linux から Solaris に変換する最良の方法は何ですか? 大まかに使用できる start-stop-daemon に相当するコマンドはありますか?

私はあまり Solaris ユーザーではないので、私の質問が本質的に無効かどうかさえわからないことを前もって認めておきます。

4

2 に答える 2

5

start-stop-daemon は Linux のものであり、Solaris ではあまり使用されません。ただし、initスクリプトを再利用したい場合は、コマンドを移植できると思います。

それ以外の場合は、使用している Solaris のバージョンによって異なります。Solaris 10 および OpenSolaris 以降では、新しい起動スクリプト フレームワーク「Solaris Service Management Facility」を使用します。これは、コマンドおよびsvcsで構成します。svccfgsvcadm

詳細については、 http://www.oracle.com/technetwork/server-storage/solaris/overview/servicemgmthowto-jsp-135655.htmlを参照してください。

古い Solaris リリースでは、ほとんどの init スクリプトは、start-stop-daemon などのヘルパー コマンドを使用せずに純粋なシェルで記述されています。

于 2008-11-13T09:46:44.997 に答える
4

Solaris 10以降では、SMFを使用することをお勧めしますが、以前のリリースでは、/ etc / init.dにinitスクリプトを作成し、rcX.dディレクトリからリンクします。rsyncデーモンを起動するためのinitスクリプトの基本的な例を次に示します。

#!/sbin/sh

startcmd () {
    /usr/local/bin/rsync --daemon  # REPLACE WITH YOUR COMMANDS
}

stopcmd () {
    pkill -f "/usr/local/bin/rsync --daemon"  # REPLACE WITH YOUR COMMANDS
}

case "$1" in
'start')
        startcmd
        ;;
'stop')
        stopcmd
        ;;
'restart')
        stopcmd
        sleep 1
        startcmd
        ;;
*)
        echo "Usage: $0 { start | stop | restart }"
        exit 1
        ;;
esac

各rcX.dディレクトリからスクリプトへのリンクを作成します(「S」/「K」の規則に従います)。

ln rsync /etc/rc3.d/S91rsync
for i in `ls -1d /etc/rc*.d | grep -v 3`; do ln rsync $i/K02rsync; done

各rcX.dディレクトリのREADMEを参照し、マニュアルページでinit.dを確認してください。これがmanページの一部です:

rc?.dディレクトリ内のファイル名は[SK] nnの形式です。ここで、Sはこのジョブを開始することを意味し、Kはこのジョブを強制終了することを意味し、nnはジョブを強制終了または開始するための相対シーケンス番号です。

状態(init S、0,2,3など)に入ると、rc [S0-6]スクリプトは、/ etc / rc [S0-6] .d内で、接頭辞Kが付いたスクリプトの後に接頭辞が付いたスクリプトを実行します。 / etc / rc [S0-6]ディレクトリの1つで各スクリプトを実行すると、/ sbin /rc[S0-6]スクリプトは単一の引数を渡します。Kのプレフィックスが付いたスクリプトの場合は引数「stop」を渡し、プレフィックスの付いたスクリプトの場合は引数「start」を渡します。同じシーケンス番号を複数のスクリプトに適用しても問題はありません。

于 2009-03-23T19:42:21.310 に答える