2019年9月18日
  • Just another WordPress site

Ubuntu14.04LTS(その05)ー起動スクリプトにつきまして

Sambaのコンパイル版を使うと、Ubuntuの起動時にどこで/usr/local/samba/sbin/sambaを実行するかが問題になります。下手すると、BINDのデーモンも起動時に動いてくれなくなります。昔は、/etc/rc.localに書いていましたが、これは今や推奨されないと言いますか、何にもなりません。ということで、いろいろ調べてみると、こちらのサイトに詳しい記述がありました。

要するに、起動スクリプトを書いて、/etc/init.d/にコピーし、update-rc.dを実行する、というものです。

 zu04

次のような$ 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はご存知のように、デーモンの再起動をさせるオプションです。

コメントを残す

CAPTCHA