私はモノの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が起動するまでサービスを読み込まないようにするにはどうすればよいですか。
追加 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です)。