web-dev-qa-db-ja.com

mysqlが起動した後でのみsystemdサービスを開始するにはどうすればよいですか?

私はモノのEmailServerであるプロジェクトに取り組んでいます。起動時に自動的に起動するようにsystemdにサービスを追加しようとしましたが、問題があります。

スクリプトを作成して/lib/systemd/system/emailserver.serviceに追加し、ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.serviceを実行しました。

次に、systemd reload-daemonに続いてsystemctl start emailserver.serviceを実行し、ps -ef |grep -i emailserverを実行すると、mono EmailServer.exeが実行されていることがわかります。

ただし、/var/log/messagesファイルでサーバーを再起動すると、次のエラーメッセージが表示されます

Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff
time over, scheduling restart. Jul 16 19:41:02 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:03 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:04 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:04 dev-server systemd[1]: emailserver.service start request
repeated too quickly, refusing to start.

私のemailserver.serviceスクリプトには、以下があります

[Unit]
Description=Boardies Email Server Startup Script

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

OpenSuse 12.1を使用しています

何が悪いのか、あなたが提供できる助けに感謝します。

[〜#〜] update [〜#〜]起動時にプログラムが機能しなくなる原因を見つけましたが、この問題を解決する方法がわかりません。私のプログラムはMySQLデータベースに依存しており、MySQLが起動する前にプログラムが起動していると思います。MySQLが起動するまでサービスを読み込まないようにするにはどうすればよいですか。

15
Boardy

追加 After=mysql.serviceをサービスファイルに変更(またはファイルを正しいサービス名に変更)します。例:

[Unit]
Description=Boardies Email Server Startup Script
After=mysql.service

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

サービスファイルを/ lib/systemd/systemに置く必要はありません。これはユーザー提供のファイルであり、/ etc/systemd/systemにのみコピーする必要があります。

すべてのサービスファイルのリストを取得するには、systemctl list-unit-filesとデータベースサービスの正しい名前を決定します(おそらくmysql.serviceまたはmysqld.serviceです)。

31
Ulrich Dangel