web-dev-qa-db-ja.com

Ubuntuの起動時にシェルスクリプトを実行する

Jvmで実行されるシェルスクリプトがあります。次のように記述します。sh /opt/bin/myshel.sh/etc/inti.dに次の詳細を含むシェルスクリプトを追加しました。

#! /bin/sh
### BEGIN INIT INFO
# Provides:          WSO2Services.sh
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

/opt/bin/myshel.sh

このファイルを「myShell.sh」として「/etc/init.d」に保存し、モードを実行可能ファイルに変更しました。また、Sudo update-rc.d myShell.sh defaultsを使用して「rc * .d」ファイルを更新しました。問題は、再起動時に実行されていないことです。

1
Reza Ameri

起動時に何かを実行する最も簡単な方法は、それを/etc/rc.localに置くことです。完全なSysV initスクリプトを作成する場合は、既存のスクリプトをテンプレートとして使用することをお勧めします。また、アップスタートジョブの使用を検討することもできます。

1
TeTeT

最初に/etc/inittabファイルを確認してください。 id:2:initdefaultのような行があるので、ランレベル2(私の場合)から始まります。したがって、これは起動時に開始されます:/etc/init.d/rc 2。したがって、/etc/rc2.dでS ## somename(#は10進数)で始まるすべてのスクリプトが実行されます。これらは、/etc/init.dのスクリプトへのシンボリックリンクです。

あなたの場合も同様のことをしなければなりません。ランレベルが2の場合は、/ etc/rc2.d/S ## myshell.shに../init.d/myshel.shのスクリプトへのシンボリックリンクを作成します。その後、起動中に実行されます。同じスクリプトレベル(Sの後の小数点以下2桁)のスクリプトは並行して実行されることに注意してください。

/etc/init.d内のファイルがどのように見えるか、どの引数をサポートする必要があるかを確認することをお勧めします。

1
TrueY