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


14

私はモノの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を使用しています

私が何を間違えているのか、あなたが提供できる助けに感謝します。

更新 プログラムが起動時に動作を停止する原因を見つけましたが、この問題を解決する方法はわかりません。私のプログラムはMySQLデータベースに依存しており、MySQLが起動する前にプログラムが起動していると思います。MySQLが起動するまでサービスをロードしないようにするにはどうすればよいですか。


回答:


29

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のいずれかです)


複数After=*.service注文できますか?
シアストピエカルツ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.