Ubuntu:マシンの起動時にSQLを実行するスクリプトをどこに追加しますか?

Ubuntu:マシンの起動時にSQLを実行するスクリプトをどこに追加しますか?

Ubuntuが起動するたびに、いくつかのSQLを実行するスクリプトを実行する必要があります。したがって、MySQLが起動した後に実行する必要があります。

これらのスクリプトはどこに置くべきですか?

答え1

ファイルはに配置され/etc/init.d、リンクはに配置される必要があります/etc/rc2.d(ランレベル2にあると仮定します(参考文献を参照who -r)。

S99sqlリンクは、rc2.dのすべてのファイルがアルファベット順に実行される形式でなければなりません。

要約する、

ツアーファイルの作成/etc/init.d/mysqlcmd.sh

次に、ディレクトリを /etc/rc2.d ans に変更します。ln -s ../init.d/mysqlcmd.sh S99mysql

答え2

システム

使用しているUbuntuバージョン(14.04以降)を使用している場合は、ファイルを変更し、準備ができたらsystemd実行.serviceする別のスクリプトを追加できます。MySQL

# vi /usr/lib/systemd/system/mysqld.service

他の項目を追加してください。

ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID

セミコロンとスクリプト名を追加すると、次のようになります。

ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID ; <path to my script>

bashこれらのスクリプトはシェルを使用して実行されないため、リダイレクトなどが必要な場合はスクリプトなどをラップする必要があります。

スクリプトmysqld-wait-readyは、あなたが言ったように正しく実行し、mysqld接続を受け入れる準備ができるまで待ちます。したがって、スクリプトはサーバー上でSQLを実行できる必要があります。

突然現れる

Ubuntu 14.04より前のバージョンでは、upstartconfファイルを生成できます。

description     "My Post-MySQL Start Script"
author "Pavel Bernshtam"

start on started mysql

task
script
    # do my stuff here
end script

次の場所にファイルを保存/etc/init/<my script name>.conf

スクリプトの詳細については、upstart次をご覧ください。ここ

関連情報