パンジェンシーの「汗だく開発日誌」

システム開発の備忘録です。

【Ubuntu】OS起動時に自作スクリプトを動かす

こんにちわ!
パンジェンシーです。

 

Node.jsで作成したWebアプリを動かす場合、自分で動かすなら、サーバーを起動してnpm startとか叩けばいいと思います。

しかし、デモに使うとか自分以外の人が動かす場合などは、「え〜、面倒くさ〜い。電源ボタン押すだけでよくならないの〜」などと言われます。

f:id:x-fieldatts:20150502134035p:plain

そこで、今回はUbuntu起動時に自作のスクリプトを自動で動かしてみました。

 

※本記事作成の際、色々なページを参考にさせていただきました。深く感謝致します。

環境

 

手順

自作スクリプトの作成 (creating my script)

ここでは、sampleという自作スクリプトを作ったとします。

スクリプトの場所は、/home/[user_name]/script/です。

※[user_name]は、適宜置き換えます。

だいたいこんな感じです。

sample

#! /bin/sh

case "$1" in
  start)
    cd /home/[user_name]/script/
    npm start > /dev/null 2>&1 &
    ;;
  stop)
    cd /home/[user_name]/script/
npm stop &
;;
esac

exit 0

実行権限を付与しておきます。

$ chmod a+x sample

自作スクリプト起動用プログラム作成 (creating program for starting my script)

sampleという新しいサービスを作成します。

$ cd /etc/init.d
$ sudo gedit sample

サービスの制御を行うためのプログラムを作成します。

/etc/init.d/sample

#! /bin/sh
### BEGIN INIT INFO
# Provides:          sample
# Required-Start:    $network
# Required-Stop:
# Should-Start:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: 
# Description: 
### END INIT INFO
 
case "$1" in
  start)
    /home/[user_name]/script/sample start
    ;;
  stop)
    /home/[user_name]/script/sample stop
    ;;
  *)
    echo "Usage: service sample {start|stop}" >&2
    exit 1
    ;;
esac
 
exit 0

これも実行権限を付与します。

$ chmod a+x sample

サービスの登録 (registration service)

sysv-rc-confコマンドがインストールされていない場合はインストールします。

$ sudo apt-get install sysv-rc-conf

sampleという新しいサービスを登録します。

$ sudo sysv-rc-conf sample on


あとは、サーバを再起動すれば自作スクリプトが動いてくれるはずです。

サービスの削除 (off service)

サービスの自動起動をさせないようにする場合は

$ sudo sysv-rc-conf sample off

とすればOKです。

現在の設定は、

$ sudo sysv-rc-conf

で確認できます。

サービスの手動起動/停止 (start / stop service manually)

手動でサービスを停止したり、起動したりする場合は、

手動起動

$ sudo service sample start

手動停止

$ sudo service sample stop

とすればOKです。


以上、誰かの参考になれば幸いです。