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より前のバージョンでは、upstart
confファイルを生成できます。
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
次をご覧ください。ここ