設定手順
- 起動・停止スクリプトの作成 (性質の似たサービスのスクリプトファイルを流用しました))
# cd /lib/svc/method
# vi proftpd
|
緑:デフォルト、オレンジ:変更箇所 |
|
#!/sbin/sh
#
#
. /lib/svc/share/smf_include.sh ※1
[ -f /etc/proftpd.conf ] || exit $SMF_EXIT_ERR_CONFIG ※1
case "$1" in
'start')
/usr/local/proftpd/sbin/proftpd & ※2
;;
'stop')
pkill proftpd & ※3
;;
'restart')
$0 stop
$0 start
;;
*)
echo "Usage: $0 { start | stop | restart }"
exit 1
;;
esac |
|
|
|
※1 |
|
共通ライブラリのインクルード。 各種エラー処理などを行う。 |
|
※2 |
|
インストールした "ProFTPD" の実行ファイルを指定。 |
|
※3 |
|
プロセスの停止コマンド。 実行ファイル名の他、" pkill `cat /usr/local/proftpd/var/proftpd.pid` " でもOK。 |
必要最小限のスクリプトです。 同じディレクトリのスタンドアロン型サービスを参考に編集してください。 このスクリプトは、次に作成するマニフェストファイルに記述し、svcadmコマンド実行時に呼び出されます。
- マニフェストファイルの作成 (こちらも、性質の似たサービスのマニフェストファイルを流用しました)
# vi /var/svc/manifest/network/proftpd.xml
|
緑:デフォルト、オレンジ:変更箇所 |
|
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type='manifest' name='ProFTPD'> ※1
<service
name='network/proftpd'
type='service'
version='1'>
<create_default_instance enabled='false' /> ※2
<single_instance />
<dependency name='network' ※3
grouping='require_any'
restart_on='error'
type='service'>
<service_fmri value='svc:/network/service' />
</dependency>
<exec_method ※4
type='method'
name='start'
exec='/lib/svc/method/proftpd start'
timeout_seconds='30' />
<exec_method ※4
type='method'
name='stop'
exec='/lib/svc/method/proftpd stop'
timeout_seconds='30' />
<stability value='Unstable' />
</service>
</service_bundle> |
|
|
|
※1 |
|
サービス名 |
|
※2 |
|
サービスの登録時に自動的に有効(起動)にするか、否か。 |
|
※3 |
|
"dependency" は依存関係の設定。(多分、/network/service に依存しているということかな) |
|
※4 |
|
svcadmコマンドで enable/disable とした場合に実行されるスクリプトのパスを登録。 |
詳細なことは良くわかりませんが、このファイルはサービスの情報や他のサービスとの依存関係、起動・停止処理などを記したものです。
同じ性質の他のサービスのファイルをコピーして修正するのが無難でしょう。
サービスによってマニフェストファイルの配置が異なるようです。
/var/svc/manifest/network/********.xml
/application/********.xml
/device/********.xml
/milestone/********.xml
/platform/********.xml
/site/********.xml
/system//********.xml こんな感じ。。
- SMFサービスへの登録、ついでに削除
SMFへの登録
# svccfg import /var/svc/manifest/network/proftpd.xml
SMFから削除
# svccfg delete svc:/network/proftpd |
修正する場合は、マニフェストファイルを変更し、delete & import が良いでしょう。
直接変更する方法もありますが、設定とマニフェストファイルの内容がずれてくるのでお勧めできませんね。
- サービスの有効化&状態確認
# svcadm enable svc:/network/proftpd ※1
# svcs -l svc:/network/proftpd ※2
fmri svc:/network/proftpd:default
有効 true ※2-1
状態 online ※2-2
next_state none
state_time 2010年01月27日 (水) 14時35分36秒
logfile /var/svc/log/network-proftpd:default.log
リスタータ svc:/system/svc/restarter:default
contract_id 877
dependency require_any/error svc:/network/service (online)
|
|
※1 |
|
指定したサービスの起動を行う。 停止する場合は "disable" とする。 |
|
※2 |
|
サービスの状態確認
|
2-1 |
|
true であれば、起動制御を受ける。 |
|
2-2 |
|
online ならサービス実行中。 maintenance の場合は依存するサービスが止まっている場合があるので要確認。 |
|
|