に実行され終了されるスクリプトがあります/etc/init.d
。起動時に自動的に起動する/etc/rc5.d
シンボリックリンクが追加されています。chkconfig
したがって、起動時に起動し、service myscript start
ユーザーが手動で制御することができます。章で説明されている順序は起動時に実行されることが知られてservice myscript stop
います。start
しかし、私もいくつかの活動をしなければなりません。ただシステムがすでに起動している場合は、起動時に手動でこの操作を実行するためにユーザーに明示的なアクセス権を付与する必要はありません。存在するこの記事説明したように、boot()
スクリプトにシーケンスを追加でき、起動時にのみ実行されます。しかし、それは動作しません。私は別のアプローチを試しました。boot()
次のように書いていますが、function boot()
結果は同じです。動作しません。したがって、いくつかの質問が提起されます。ディストリビューション機能ですか、それともこのシーケンスはスクリプトのどこかにあるべきですか?どちらも間違っている場合(またはすべてがboot()
間違っているか使用されなくなった場合)、起動時にのみ操作を実行できますか?私のシステムはLinux Red Hat Enterprise 6
。
これは私のスクリプトです。
#!/bin/bash
#Some comments here
#some inclusions of another scripts here
function startService()
{
#some activity for launching
}
boot()
{
#That's it. Here I want to perform some preparations (remove files)
#and then launch starting sequence:
if [ -f "somefilename" ]
then
rm -f "somefilename"
fi
startService
}
function stopService()
{
#Activity for stopping
}
#Some functions for service's status retrieving here
case "$1" in
start)
startService
;;
stop)
stopService
;;
status)
#Calls of status functions
;;
*)
echo "Usage: {start | stop | status}"
exit 1
;;
esac
よろしくお願いします。
ベストアンサー1
私はboot()セクションを持つinitスクリプトに慣れていないので、OpenWRTまたはbusyboxに固有のものです。 RHEL6では、「boot」パラメータではなく「start」パラメータを介してのみinitスクリプトを呼び出すことができます。
RHEL6で起動時にスクリプトを実行するには、/ etc / initディレクトリでUpstart用の「confファイル」を設定する必要があります。起動例として /etc/init/rc.conf をお勧めします。次のように名前を付けます。myscript.conf、次のように記入してください。
# adjust the runlevels if you don't want to run myscript in every runlevel
start on runlevel [0123456]
# this tells init to just run this once and let it exit
task
# if you want to see the output from your script on the console, use the following line; otherwise remove it
console output
# call myscript with a boot flag (to keep one copy of your script in /etc/init.d; adjust this if you'd rather have a separate boot-script)
exec /etc/init.d/myscript boot
upstartのinitに関する詳細情報を確認してくださいman -s5 init
。