Solaris 10 サービスを止めてみる

SMFで管理されているサービスは kill しても svc.startd によってまた起動されてしまう。よく落ちる syslogd なんかにはありがたい機能だけど、そもそも起動したくない奴をいかに落とすか、という話です。

# svcs | grep sendmail
online         13:41:59 svc:/network/smtp:sendmail

svcsコマンドはサービスコンフィギュレーションリポジトリに記録されているサービスインスタンスの情報を表示するコマンド(man svcsより)。
ここでは大嫌いなsendmailを二度と起動しないようにしてみます。

# svcadm
Usage: svcadm [-v] enable [-rt] FMRI...
       svcadm [-v] disable [-t] FMRI...
       svcadm [-v] restart FMRI...
       svcadm [-v] refresh FMRI...
       svcadm [-v] mark [-It] {degraded | maintenance} FMRI...
       svcadm [-v] clear FMRI...
       svcadm [-v] delegate restarter_FMRI FMRI...
       svcadm [-v] milestone [-d] milestone_FMRI

ということらしい。

# svcadm -v disable svc:/network/smtp:sendmail
svc:/network/smtp:sendmail disabled.

-v をつけないと何も出力してくれなかった。

# svcs | grep sendmail
# ps -ef | grep sendmail
    root  7164  7055   0 18:18:04 pts/1       0:00 grep sendmail

見事にいなくなった。再起動後し、起動していない事を確認。

# svcadm -v disable -t sendmail
svc:/network/smtp:sendmail temporarily disabled.

ちなみに、-t オプションはその場限りのテンポラリオプション。再起動後は元気に起動します。

とりあえず小手先の話なので、サービスインスタンスリポジトリの管理がどうなっているか、などSMFの仕組みをきちんと勉強します。
http://docs.sun.com/app/docs/doc/817-1985/6mhm8o5n6?a=view