現在、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識別子を示します。
upstart
を心配しないでください。RHEL(およびCentOS)はバージョン7の systemd
に移行しています。 Mark Shuttleworthによるブログ投稿 )。