init.dスクリプトをUbuntu / Debian LinuxからSolarisに変換するにはどうすればよいですか?
質問
いくつかのデーモンを起動するために使用しているinit.dスクリプトがいくつかあります。私がインターネットで見つけたこれらのスクリプトのほとんどは、すべてstart-stop-daemonを使用しています。私の理解では、「start-stop-daemon」ということです。 LinuxまたはBSDディストリビューションに固有のコマンドであり、Solarisでは使用できません。
init.dスクリプトをLinuxからSolarisに変換する最良の方法は何ですか?おおよそ使用できるstart-stop-daemonに相当するコマンドはありますか?
私はSolarisユーザーではないので、質問が本質的に無効かどうかさえわからないことを前もって認めます。
解決
start-stop-daemonはLinuxのものであり、Solarisではあまり使用されません。ただし、initスクリプトを再利用する場合は、コマンドを移植できると思います。
それ以外の場合は、使用しているSolarisのバージョンによって異なります。 Solaris 10およびOpenSolarisからは、新しい起動スクリプトフレームワーク" Solaris Service Management Facility"を使用します。これは、コマンド svcs
、 svccfg
および svcadmで構成します。
。
古いSolarisリリースでは、ほとんどのinitスクリプトは、start-stop-daemonなどのヘルパーコマンドなしで純粋なシェルで記述されています。
他のヒント
Solaris 10以降ではSMFを使用することをお勧めしますが、以前のリリースでは、initスクリプトを/etc/init.dに作成し、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: ln rsync /etc/rc3.d/S91rsync
for i in `ls -1d /etc/rc*.d | grep -v 3`; do ln rsync $i/K02rsync; done
{ start | stop | restart }"
exit 1
;;
esac
各rcX.dディレクトリからスクリプトへのリンクを作成します(" S" /" K"規約に従います)。
<*>各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のプレフィックスが付いたスクリプトを実行します その後にSの接頭辞が付いたスクリプトが続きます。それぞれを実行するとき / etc / rc [S0-6]ディレクトリの1つである/ sbin / rc [S0-6]のスクリプト スクリプトは単一の引数を渡します。引数 'stop'を渡します 接頭辞がKのスクリプトおよびスクリプトの引数 'start'の場合 Sの接頭辞。同じシーケンスを適用しても問題はありません 複数のスクリプトへの番号。