web-dev-qa-db-ja.com

CentOS 6のアップスタートドキュメント

現在、CentOS 5.5から6.4に移行しています。 / etc/inittabのものをupstartに変換する楽しみを持っています。多くの小さな問題にぶつかりましたが、今、こつこつとなっています。私が見つけた最高のドキュメントはUbuntuです:

http://upstart.ubuntu.com/cookbook/#id416

私が遭遇したさまざまな新興企業の問題に役立ちました。唯一の問題は、ubuntuアイテムの一部がCentOSで動作しないことです(ロガー機能を動作させることはできませんが、 'exec>/dev/kmsg 2>&1'でそれを回避する方法が見つかりました)。

起動スクリプトを支援するためのCentOS固有のドキュメントはありますか? CentOSには、Ubuntuと同じドキュメントが必要です。

私は新興企業なので、ベストプラクティスはまだわかりません。以下のスクリプトもうまく機能しているようです。それについてのコメントは大歓迎です。

以下は、サーバーへのモデムダイヤルインサービス用のTTYを起動するスクリプトです。 USB、シリアル、ネットワークモデムバンク(Digi Port Server)で接続されたモデムのTTYを起動できます。管理者が管理するファイルを使用して、起動するttyを指定します。

/ etc/init/ssi-ttys.conf:

start on stopped rc RUNLEVEL=[2345]

task
script
  #--------------------------------------------------------------------
  # The following exec will send the data to the kernels ring buffer.
  # Once the syslog daemon starts, this data will be redirected to the
  # system log file. So, the echo below will be written out to
  # /var/log/messages. Helps out a ton when you need to debug these
  # scripts.
  #--------------------------------------------------------------------
  exec >/dev/kmsg 2>&1
  re="^#"
  while read line
  do
    tty=
    identifier=
    # Proccess /etc/ssi-init-ttys.conf lines without comments
    if [[ ! $line =~ $re ]]
    then
      set $line
      tty=$1
      identifier=$2
      echo "Starting TTY ($tty) ($identifier) using ssi-tty.conf"
      #-----------------------------------------------------------------
      # Remember that Upstart runs every script section using /bin/sh -e.
      # This means that if any simple command fails, the Shell will exit.
      # So, this is why || true is added to the start so if one of the
      # TTYs is already running (Which would normally cause an exit,
      # the loop will continue and start other TTYs without exiting.
      # Add || true to any system command that might return a code other
      # than 0.
      #------------------------------------------------------------------
      initctl start ssi-tty TTY=$tty IDENTIFIER=$identifier || true
    fi
  done </etc/ssi-init-ttys.conf
end script

/ etc/init/ssi-tty.conf:

stop on runlevel [S016]

respawn
respawn limit 5 10
# There's an automatic limit set to this: if a process is respawned more
# than 5 times within 10 seconds, it will be stopped and not restarted.
# Check /var/log/messages and /var/log/mgetty.log.<tty> for error messages
instance $TTY
script
  # Regex for serial and USB ttys
  reg1="ttyUSB"
  reg2="ttyS"
  m_flg=""
  # Check for USB or serial ttys which use the -D flag for mgetty 
  if [[ $TTY =~ $reg1 ]] || [[ $TTY =~ $reg2 ]]
  then
    # Use -D flag with mgetty for ttyUSB and ttyS ports
    m_flg="-D"
  fi
  exec /sbin/mgetty $m_flg $TTY $IDENTIFIER
end script
usage 'ssi-tty TTY=ttyX IDENTIFIER=Z  - ttyX is the tty id and Z is the /etc/gettydefs identifier'

/etc/ssi-init-ttys.conf:

# Serial port TTY
ttyS0 9
# USB port tty
ttyUSB0 9
# Digi port tty
ttyA18 9

注:9は、ttyに使用する適切な/ etc/gettydefs識別子を示します。

5
GoinOff

upstartを心配しないでください。RHEL(およびCentOS)はバージョン7の systemd に移行しています。 Mark Shuttleworthによるブログ投稿 )。

5
vonbrand