
Ubuntu日本語フォーラム

ログインしていません。
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日
オフライン
Rasum さん
起動時にスクリプトを実行したいだけなのであれば、
crontab に記述してはどうでしょうか?
時間を記述するところを @reboot に置き換えることで
起動時にそのスクリプトを実行できます。
また、ユーザで起動した crontab でも起動時に
スクリプトが実行されるので、root 権限で操作する必要がなくなります。
ご参考までに。
オフライン
hellfire様、ありがとうございます。
crontabへの @reboot 記述で起動時にスクリプトを実行できました。
(/etc/init.d.& update-rc.dでできない疑問は残りますが)
2016年2月9日
オフライン
Rasum による投稿:
(3)tmp.shを/etc/init.d に置き
# update-rc.d tmp.sh defaults 99
とし、再起動しても期待したファイルが作成されない。
スクリプト中の date を /bin/date に変えるとどうだろう。
/etc/init.d から実行するときはパスが設定されていなかった気がする。
サンプル スクリプトの /etc/init.d/skeleton をみると、わざわざパスを設定しているし。
オフライン