お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2016-02-07 23:07:40

Rasum
メンバ
登録日: 2008-12-07

シェルスクリプトの起動時実行について

ubuntu12.04を使っています。
自作シェルスクリプトを起動時に実行させようとしていますが、/etc/rc.local に書き込んでも、/etc/init.d に入れてupdate-rc.dで設定しても動きません。
スクリプトを単純化しても次のような状況です。
どこが間違っているのでしょうか。

(1)touchコマンドでファイルを作成するだけのシェルスクリプトtmp.shを作成し、ファイル属性を755に。
   #!/bin/sh -e
   str_now=`date "+%Y%m%d-%H%M%S"`
   touch /MYDIR/${str_now}tmp.tmp
   exit 0

(2)tmp.shを/etc/rc.localのexit行の前に書き込んで再起動しても期待したファイルが作成されない。

(3)tmp.shを/etc/init.d に置き
  # update-rc.d tmp.sh defaults 99
 とし、再起動しても期待したファイルが作成されない。

(4) # /etc/rc2.d/S99tmp.sh
  を端末から実行すると期待したファイルができている。
以上
2016年2月7日

オフライン

 

#2 2016-02-08 22:45:02

hellfire
メンバ
From: 日本/神奈川県
登録日: 2006-11-21

Re: シェルスクリプトの起動時実行について

Rasum さん

起動時にスクリプトを実行したいだけなのであれば、
crontab に記述してはどうでしょうか?

時間を記述するところを @reboot に置き換えることで
起動時にそのスクリプトを実行できます。

また、ユーザで起動した crontab でも起動時に
スクリプトが実行されるので、root 権限で操作する必要がなくなります。

ご参考までに。

オフライン

 

#3 2016-02-09 08:06:29

Rasum
メンバ
登録日: 2008-12-07

Re: シェルスクリプトの起動時実行について

hellfire様、ありがとうございます。
crontabへの @reboot 記述で起動時にスクリプトを実行できました。
(/etc/init.d.& update-rc.dでできない疑問は残りますが)
2016年2月9日

オフライン

 

#4 2016-02-09 17:46:57

ry
メンバ
登録日: 2008-07-30

Re: シェルスクリプトの起動時実行について

Rasum による投稿:

(3)tmp.shを/etc/init.d に置き
  # update-rc.d tmp.sh defaults 99
 とし、再起動しても期待したファイルが作成されない。

スクリプト中の date を /bin/date に変えるとどうだろう。
/etc/init.d から実行するときはパスが設定されていなかった気がする。
サンプル スクリプトの /etc/init.d/skeleton をみると、わざわざパスを設定しているし。

オフライン

 

Board footer

Powered by FluxBB