Sambaのコンパイル版を使うと、Ubuntuの起動時にどこで/usr/local/samba/sbin/sambaを実行するかが問題になります。下手すると、BINDのデーモンも起動時に動いてくれなくなります。昔は、/etc/rc.localに書いていましたが、これは今や推奨されないと言いますか、何にもなりません。ということで、いろいろ調べてみると、こちらのサイトに詳しい記述がありました。
要するに、起動スクリプトを書いて、/etc/init.d/にコピーし、update-rc.dを実行する、というものです。
次のような$ sudo gedit bindsamba.shを作成します。
#!/bin/bash sudo service bind9 start sudo /usr/local/samba/sbin/samba
このあと、実行権限をつけて、$ cp -a bindsamba.sh /etc/init.d/とし、sudo update-rc.d bindsamba.sh defaultsとすれば良い。「sudo」は要らないでしょう。なお、次のような/etc/init.d/sambaを作成しましたが、$ sudo service samba restartがうまく動いてくれません。
#! /bin/bash # # samba4 Bring up/down samba4 service # # chkconfig: - 90 10 # description: Activates/Deactivates all samba4 interfaces configured to \ # start at boot time. # ### BEGIN INIT INFO # Provides: # Should-Start: # Short-Description: Bring up/down samba4 # Description: Bring up/down samba4 ### END INIT INFO # Source function library. # . /etc/init.d/functions # if [ -f /etc/sysconfig/samba4 ]; then # . /etc/sysconfig/samba4 # fi CWD=$(pwd) prog="samba4" start() { # Attach irda device echo $"Starting $prog: " /usr/local/samba/sbin/samba sleep 2 # if ps ax | grep -v "grep" | grep -q /samba/sbin/samba # if ps ax | grep samba -q /samba/sbin/samba # then # echo "success samba4 startup" # else # echo "failure samba4 startup" # fi echo "\n" ps ax | grep samba } stop() { # Stop service. if [ -f /usr/local/samba/var/run/samba.pid ] then echo $"Shutting down $prog: " killall samba /usr/bin/sudo /bin/rm /usr/local/samba/var/run/samba.pid fi sleep 2 # if ps ax | grep samba -q /samba/sbin/samba # then # echo "failure $"samba4 shutdown" # else # echo "success samba4 shutdown" # fi echo "\n" ps ax | grep samba } restart() { # Stop service. if [ -f /usr/local/samba/var/run/samba.pid ] then echo $"Shutting down $prog: " killall samba /usr/bin/sudo /bin/rm /usr/local/samba/var/run/samba.pid fi sleep 1 # if ps ax | grep samba -q /samba/sbin/samba echo "Starting up Samba4 ..." /usr/local/samba/sbin/samba sleep 2 ps ax | grep samba } status() { /usr/local/samba/sbin/samba --show-build } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status irattach ;; restart|reload) # stop # start # ps ax | grep samba restart ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0
手を加えて、うまく動作するようになればサイトに投稿します。killallでスクリプトがストップするようです。パイプを使って騙したら、ともかくも動作するようになりました。
#! /bin/bash # # samba4 Bring up/down samba4 service # # chkconfig: - 90 10 # description: Activates/Deactivates all samba4 interfaces configured to \ # start at boot time. # ### BEGIN INIT INFO # Provides: # Should-Start: # Short-Description: Bring up/down samba4 # Description: Bring up/down samba4 ### END INIT INFO # Source function library. # . /etc/init.d/functions # if [ -f /etc/sysconfig/samba4 ]; then # . /etc/sysconfig/samba4 # fi CWD=$(pwd) prog="samba4" start() { # Attach irda device echo $"Starting $prog: " /usr/local/samba/sbin/samba sleep 2 ps ax | grep samba } stop() { # Stop service. if [ -f /usr/local/samba/var/run/samba.pid ] then echo $"Shutting down $prog: " killall samba | rm /usr/local/samba/var/run/samba.pid | sleep 2 | ps ax | grep samba fi } restart() { # Stop service. echo "Restarting Samba4 ..." killall -HUP samba | sleep 2 | ps ax | grep samba } status() { /usr/local/samba/sbin/samba --show-build } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status irattach ;; restart|reload) # stop # start restart ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0
killall -HUP daemonはご存知のように、デーモンの再起動をさせるオプションです。