BSD界隈四方山話

第6回 サービス管理の要/etc/rc.confと/etc/rc.conf.d/,単一ファイルと分割ファイル

この記事を読むのに必要な時間:およそ 4 分

システム設定の要/etc/rc.conf

FreeBSDのサービス管理の特徴の一つに,すべての設定を/etc/rc.confファイルに書いておけるというものがあります。システムのデフォルト設定は/etc/defaults/rc.confに記述されています。/etc/rc.confはこれよりも優先されますので,そのシステムがどんな設定になっているのかは/etc/rc.confファイルを読めばわかるようになっています。

リスト1 /etc/rc.confの例-システムで動作するサービスやその設定の要がまとまっている

# server
defaultrouter="X.X.X.X"
hostname="parancell.ongs.co.jp"
ifconfig_bge0="inet Y.Y.Y.Y netmask Z.Z.Z.Z up"
dumpdev="AUTO"
zfs_enable="YES"
clear_tmp_enable="YES"
powerd_enable="YES"

# jail
jail_enable="YES"

# ntp
ntpd_enable="YES"

# sshd
sshd_enable="YES"
sshd_flags="-oUsePAM=no -oChallengeResponseAuthentication=no -oUseDNS=no"

# smartd
smartd_enable="YES"

# nfs
nfs_client_enable="YES"
rpcbind_enable="YES"
rpc_statd_enable="YES"
rpc_lockd_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
nfsd_enable="YES"
mountd_enable="YES"

# Nginx
nginx_enable="YES"

# ipfw
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="OPEN"

FreeBSDプロジェクトはFreeBSD 5系でNetBSD由来のサービス制御システムを移植しました。システム起動時のソフトウェアの自動アップデート,起動後のサービスの制御はrc(8)のもとで実行できます。/etc/rc.confで有効化されていないサービスはそのままでは制御できないようになっています(強制制御も可能です)⁠典型的には次のようにservice(8)コマンド経由でサービスを制御します。

図1 サービスの起動(ntpdの場合)

# service ntpd start
Starting ntpd.
#

図2 サービスの終了(ntpdの場合)

# service ntpd stop
Stopping ntpd.
Waiting for PIDS: 22889.
#

図3 サービスの再起動(ntpdの場合)

# service ntpd restart
Stopping ntpd.
Waiting for PIDS: 734.
Starting ntpd.
#

図4 サービス制御で指定できるサブコマンド(ntpdの場合)

# service ntpd help
/etc/rc.d/ntpd: unknown directive 'help'.
Usage: /etc/rc.d/ntpd [fast|force|one|quiet](start|stop|restart|rcvar|enabled|status|poll)
#

service(8)コマンド経由で実行される制御スクリプトは/etc/rc.d/にまとまっています。直接このスクリプトを実行しても同じように処理が実行されますが,サービスを制御するために適切な環境変数の設定などservice(8)コマンドは事前に設定してくれるので,service(8)コマンドを経由して制御したほうが良いでしょう。

図5 実際に制御しているのは/etc/rc.d/ディレクトリ以下の個々のスクリプト

# ls /etc/rc.d/
DAEMON                  initrandom              pflog
FILESYSTEMS             ip6addrctl              pfsync
LOGIN                   ipfilter                postrandom
NETWORKING              ipfs                    power_profile
SERVERS                 ipfw                    powerd
abi                     ipmon                   ppp
accounting              ipnat                   pppoed
addswap                 ipropd_master           pwcheck
adjkerntz               ipropd_slave            quota
amd                     ipsec                   random
apm                     ipxrouted               rarpd
apmd                    iscsictl                rctl
archdep                 iscsid                  resolv
atm1                    jail                    rfcomm_pppd_server
atm2                    kadmind                 root
atm3                    kdc                     route6d
auditd                  keyserv                 routed
auditdistd              kfd                     routing
automount               kld                     rpcbind
automountd              kldxref                 rtadvd
autounmountd            kpasswdd                rtsold
bgfsck                  ldconfig                rwho
bluetooth               local                   savecore
bootparams              local_unbound           sdpd
bridge                  localpkg                securelevel
bsnmpd                  lockd                   sendmail
bthidd                  lpd                     serial
ccd                     mdconfig                sppp
cleanvar                mdconfig2               sshd
cleartmp                mixer                   statd
cron                    motd                    static_arp
ctld                    mountcritlocal          static_ndp
ddb                     mountcritremote         stf
defaultroute            mountd                  swap
devd                    mountlate               swaplate
devfs                   moused                  syscons
dhclient                mroute6d                sysctl
dmesg                   mrouted                 syslogd
dumpon                  msgs                    timed
faith                   natd                    tmp
fsck                    netif                   ubthidhci
ftp-proxy               netoptions              ugidfw
ftpd                    netwait                 utx
gbde                    newsyslog               var
geli                    nfscbd                  virecover
geli2                   nfsclient               watchdogd
gptboot                 nfsd                    wpa_supplicant
gssd                    nfsuserd                ypbind
hastd                   nisdomain               yppasswdd
hcsecd                  nscd                    ypserv
hostapd                 nsswitch                ypset
hostid                  ntpd                    ypupdated
hostid_save             ntpdate                 ypxfrd
hostname                othermta                zfs
inetd                   pf                      zvol
#

パッケージやPorts Collection経由でインストールしたサードパーティ製のソフトウェアの制御スクリプトは/usr/local/etc/rc.d/以下にインストールされます。

図6 サードパーティ製ソフトウェアの制御スクリプトは/usr/local/etc/rc.d/以下にインストールされる

# tree /usr/local/etc/rc.d/
/usr/local/etc/rc.d/
|-- git_daemon
|-- mdnsd
|-- mdnsresponderposix
|-- nginx
|-- smartd
\`-- svnserve

0 directories, 6 files
# file /usr/local/etc/rc.d/*
/usr/local/etc/rc.d/git_daemon:         POSIX shell script, ASCII text executable
/usr/local/etc/rc.d/mdnsd:              POSIX shell script, ASCII text executable
/usr/local/etc/rc.d/mdnsresponderposix: POSIX shell script, ASCII text executable
/usr/local/etc/rc.d/nginx:              POSIX shell script, ASCII text executable
/usr/local/etc/rc.d/smartd:             POSIX shell script, ASCII text executable
/usr/local/etc/rc.d/svnserve:           POSIX shell script, ASCII text executable
#

/usr/local/etc/rc.d/以下のスクリプトも/etc/rc.confで利用するかどうかを設定でき,service(8)コマンドでの制御の対象となります。

コメント

コメントの記入